2012-03-27 92 views
1

我想使用jQuery和c#執行文件上傳,但我遇到了很多問題。我無法弄清楚如何讓文件上傳。它工作正常,如果我使用FileUpload,但我允許用戶動態添加文件,所以我正在使用Jquery(ajax發佈到另一個文件)爲了處理文件。首先,我得到一個POST和enctype錯誤,但現在它只是沒有做任何事情。 Firebug向我展示了ajax代碼失敗,但沒有告訴我任何其他事情。使用JQuery和C多文件上傳#

這裏是我的jQuery:

function AddDocumentsDatabase() { 
    $('input:file').each(function (index) { 
     var fileName = $(this).val(); 

     $.ajax(
     { 
      type: "POST", 
      url: "../ajaxURLs/InsertDocument.aspx?requestNumber=" + reqNum + "&fileName=" + fileName, 
      contentType: 'multipart/form-data', 
      cache: false, 
      success: function (html) { 
       alert("File Inserted!") 
      } 
     } 
     ); 
    }); 
} 

這裏是InsertDocument.aspx代碼:

RequestDB db = new RequestDB(); 
    ApplicationFunctions app = new ApplicationFunctions(); 

    protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("Hello"); 
    foreach (string key in Request.Form) 
    { 
     if (!key.StartsWith("fleBrowse")) continue; 
     { 
      Response.Write(Request.Form[key].GetType()); 
     } 

    } 
} 

如果事情真的很簡單,我很抱歉,我的心是不是在滿運行速度,現在。任何建議,非常感謝。

+3

您自己的異步FileUpload是一項艱鉅的任務,取決於瀏覽器支持(HTML5,Flash,...) 您應該檢查現有的實現。 我很滿意plupload:http://www.plupload.com/ – jbl 2012-03-27 19:35:49

+1

同意 - 不需要重新發明這個輪子。特別是因爲jQuery沒有內置的功能來將所選文件的內容實際發佈到服務器上 - 您上面發佈的代碼將發送文件名,但不會發送文件本身,所以您的服務器將無法執行它很多機智。 – Dave 2012-03-27 19:52:33

回答

2

我同意shawleigh17;這是一項很大的工作,而其他人則做得很好。我已經使用jQuery FileUpload(http://blueimp.github.com/jQuery-File-Upload/)取得了巨大成功。但是,如果你想嘗試調試代碼,嘗試添加誤差函數您Ajax調用調試:

$.ajax(
{ 
    type: "POST", 
    url: "../ajaxURLs/InsertDocument.aspx?requestNumber=" + reqNum + "&fileName=" + fileName, 
    contentType: 'multipart/form-data', 
    cache: false, 
    success: function (html) { 
    alert("File Inserted!") 
    }, 
    error(jqXHR, textStatus, errorThrown) { 
    alert("Error: " + textStatus + ": " + errorThrown); 
    } 
});