2014-02-17 70 views
1

System.InvalidCastException:無法投類型 「System.String」的對象鍵入「System.Web.HttpPostedFile」無法上傳多個文件中ashx的處理程序

這是錯誤出現在我的回覆標題中。 我無法通過ajax發送多個文件到處理程序。

jQuery的

  var data = new FormData(); 
      jQuery.each($('#multipleFileUpload')[0].files, function (i, file) { 
       data.append('file-' + i, file); 
      }); 

      $.ajax({ 
       url: "../handlers/project/sell/galleryUpload.ashx", 
       type: "POST", 
       contentType: false, 
       processData: false, 
       cache: false, 
       async: true, 
       data: data, 
       error: function (data) { 
        alert("Erro no envio de fotos do projecto. " + data.status); 
       } 
      }); 

處理程序:

foreach (HttpPostedFile file in context.Request.Files) 
{ ... } 
//it gives error in this line 

回答

1

我有同樣的問題。我不知道爲什麼,但是在循環訪問context.Request.Files集合時出現問題。

取而代之,請使用傳統的for循環,並將其顯式轉換爲HttpPostedFile。

HttpFileCollection files = context.Request.Files; 
for (int i = 0; i < files.Count;i++) 
{ 
    HttpPostedFile file = files[i]; 
    string fname = context.Server.MapPath("~/uploads/" + file.FileName); 
    file.SaveAs(fname); 
} 

來源: http://www.binaryintellect.net/articles/f2a2f1ee-e18a-416b-893e-883c800f83f4.aspx

0

AjaxUpload是依賴於瀏覽器,您使用的是什麼瀏覽器?

您的表單是否爲enctype =「multipart/form-data」?

參加這個答案一看:

JS:How to send multiple files using FormData(jQuery Ajax)

+0

我使用谷歌Chrome和所有其他人,但我用同樣的方式來上傳和不返回錯誤一個文件,但多有誤! – Severiano

+0

要上傳一個您使用完全相同的代碼的文件嗎? –

相關問題