2012-03-27 82 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); 
    } 
});