代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

ASP.NET-使用jquery多文件上载插件进行多个上载

  •  14
  • Ronnie Overby  · 技术社区  · 15 年前

    我知道如何使用ASP.NET的文件上载控件进行上载。

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

    以下是选择多个文件进行上载时的具体操作:

    <input type="file class="multi MultiFile" id="MultiFile1_F3" name="file1[]" style="position: absolute; top: -3000px;">
    

    但我不知道如何从ASP.NET操作这些文件。 我已尝试使用request.files作为以下链接指示: ASP.Net Upload of multiple files after choosing them from jQuery

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

    有人知道怎么做吗?可能有什么要求。形式……?

    谢谢你的帮助!

    4 回复  |  直到 13 年前
        1
  •  2
  •   Tom    15 年前

    我在.NET中做过类似的工作已经有一段时间了,但是一旦您开始动态克隆表单输入,我认为您必须出去请求.form并手动查找提交的值。我编写了jquery代码,用顺序标识符克隆一些(非文件)输入 here . 只要您有唯一的标识符,就可以运行一个循环来查看request.form[“multifile1_f”+counter]是否存在,然后从那里开始。

        2
  •  5
  •   Chris Hynes    15 年前

    有两件事要检查:

    • 确保表单设置了enctype=“multipart/form data”属性。这是启用上载所必需的。
    • 确保所有文件输入都设置了id和name属性。因为某种原因,如果你不把两者都设置好,事情就会发生。

    另外,runat=“server”不应该与request.files是否工作有任何关系——这更多的是浏览器实际发布文件的问题。

        3
  •  5
  •   Ronnie Overby    15 年前

    这个jquery插件为每个生成的输入控件提供了完全相同的name属性。

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

    我建立了自己的javascript解决方案。

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

    编辑

    我重新审视了一下,发现我想做的事情一点也不困难。我得到了jquery多文件上传插件,可以很好地使用我的ASPX表单。我不知道我以前为什么有这么多麻烦。

    1.)在Web窗体上包含jquery库:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" />

    2.)引用Web表单上的多文件插件( Download it here ):

    <script src="jquery.MultiFile.pack.js" type="text/javascript">

    3.)使用class=“multi”在Web表单上添加文件输入:

    <input type="file" 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文件中:

    <system.web>
        <httpRuntime executionTimeout="240" maxRequestLength="30720"/>
    </system.web>
    

    ExecutionTimeout以秒为单位,MaxRequestLength以千字节为单位。在本例中,请求将在4分钟后超时,并允许30MB请求。

        4
  •  2
  •   Josh Mein    15 年前

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

    编辑:
    如果你不想用闪光灯 Ajax Upload 工作也很好。如果我的网站公司的网站上的用户没有最适合上传的Flash版本,我就切换到Ajax上传。他们都为我工作得很好。