2015-06-08 71 views
2

我試圖通過Web服務(ASMX)張貼在jQuery的AJAX一個文件保存到ASMX上傳文件

上傳的文件我寫的Web服務如下

[WebMethod] 
public string UploadProducts(string Title, Stream documentStream) 

我寫的在客戶端的腳本如下

 var data = new FormData(), 
     file = $("#fileUpload")[0].files[0]; // an input of type file 
     if (file != null) { 
      data.append("Title", "demotitle"); 
      data.append("documentStream", files[0]); 
      $.ajax(
      { 
       url: "FileManager.asmx/UploadFile", 
       dataType: "json", 
       type: "POST", 
       data: data, 
       cache: false, 
       contentType: false, 
       processData: false, 
       success: function() {alert('done') }, 
       error: function() { alert('error'); } 
      }); 

這似乎是行不通的。如果有人能指導我做錯了我會很棒。在此先感謝:)

+0

請定義'not working'。任何JavaScript錯誤?你在瀏覽器控制檯中看到POST請求嗎?您的webmethod中的斷點是否被擊中?你有javascript alert()嗎? –

+0

Thanks @ Mr.White,它似乎因爲web方法需要一個Stream對象,所以當前發佈文件的方式會導致500錯誤 –

+0

錯誤是什麼意思? –

回答

0

在您的代碼中刪除dataType:json

var data = new FormData(), 
file = $("#fileUpload")[0].files[0]; // an input of type file 
if (file != null) { 
    data.append("Title", "demotitle"); 
    data.append("documentStream", files[0]); 
} 
$.ajax(
{ 
    url: "FileManager.asmx/UploadFile", 
    type: "POST", 
    data: data, 
    cache: false, 
    contentType: false, 
    processData: false, 
    success: function() {alert('done') }, 
    error: function() { alert('error'); } 
}); 

這應該有效。