ASP.net – 使用jQuery多文件上传插件进行多次上传

我知道如何使用ASP.net的FileUpload控件上传。

我想要做的是使用这个jQuery多文件上传插件上传多个文件。

以下是选择上传多个文件时的function:

 

但我无法弄清楚如何从asp.net操纵这些文件。 我尝试使用Request.Files作为以下链接指示: ASP.Net从jQuery中选择后上传多个文件

这不起作用。 我认为这只适用于在编译时用runat =“server”标记的控件。

有谁知道如何做到这一点? 也许是Request.Form中的东西……?

谢谢你的帮助!

自从我在.NET中做了那样的事情以来已经有点了,但是一旦你开始动态地克隆表单输入,我认为你必须去Request.Form并手动找到提交的值。 我编写了jQuery代码来克隆一些带有顺序标识符的(非文件)输入。 只要你有唯一的标识符,就可以运行一个循环来查看Request.Form [“MultiFile1_F”+ counter]是否存在并从那里开始。

要检查两件事:

  • 确保您的表单设置了enctype =“multipart / form-data”属性。 这是启用上传所必需的。
  • 确保所有文件输入都设置了id和name属性。 出于某种原因,如果你没有设置两者,那么就会发生奇怪的事情。

此外,runat =“server”不应与Request.Files是否有效有关 – 这更像是浏览器实际发布文件的问题。

这个jQuery插件为每个生成的输入控件提供完全相同的名称属性。

出于这个原因,文件没有发布。

我构建了自己的JavaScript解决方案。

我将在评论中发布代码链接。

编辑

我重新审视了这一点,发现我试图做的事情并不是很困难。 我得到了jquery多文件上传插件,可以使用我的aspx表单。 我不知道为什么我以前遇到这么多麻烦。

1.)在Web表单中包含jQuery库:

   

2.)在Web表单上引用多文件插件( 在此处下载 ):

  

3.)在web表单上添加class =“multi”的文件输入:

   

4.)在表单提交上执行一些代码或调用这样的方法:

  void SendMail(string from, string to, string subject, string body, string smtpServer) { // create mail message MailMessage mail = new MailMessage(from, to, subject, body); // attach posted files for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFile file = Request.Files[i]; mail.Attachments.Add(new Attachment(file.InputStream, file.FileName)); } //send email new SmtpClient(smtpServer).Send(mail); } 

这就是我必须要做的就是将多个文件附加到从aspx页面发送的电子邮件中。

如果要增加可上载文件的总大小,请将其添加到web.config文件中:

    

executionTimeout以秒为单位测量,maxRequestLength以千字节为单位。 在此示例中,请求将在4分钟后超时,并允许30mb请求。

我强烈推荐Uploadify作为多文件上传器。 它使用jquery和flash来允许用户通过ctrl +点击所有需要的文件一次上传多个文件。 然后它显示上传文件的队列,并在完成时从队列中删除该文件。 它还允许您指定允许用户上传的扩展名,从而阻止您进行扩展validation。

编辑:
如果你不想使用flash Ajax Upload工作也很好。 如果我网站公司网站上的用户没有最适合uploadify的闪存版本,我会切换到Ajax上传。 它们对我来说都很好。