带有多个文件上传控件的asp.net多次上传

Posted

技术标签:

【中文标题】带有多个文件上传控件的asp.net多次上传【英文标题】:asp.net multiple uploads with multiple fileupload control 【发布时间】:2011-10-12 00:05:35 【问题描述】:

我正在处理多个文件上传的小型项目。

一开始用户有一个文件上传控件一个小图像,称为fileuploadadder

每次用户点击 fileuploadadder 时,第一个 fileupload 控件的克隆会使用 jquery 添加到页面中> 。文件上传控件的 idsuniqe。比如 file1 , file2, ...

现在,我希望当用户单击页面末尾的按钮时,asp.net 会上传所选文件。

tnx

【问题讨论】:

【参考方案1】:

这是一个例子:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script type="text/c#" runat="server">
    protected void BtnUpload_Click(object sender, EventArgs e)
    
        if (Request.Files != null)
        
            foreach (string file in Request.Files)
            
                var uploadedFile = Request.Files[file];
                if (uploadedFile.ContentLength > 0)
                
                    var appData = Server.MapPath("~/app_data");
                    var fileName = Path.GetFileName(uploadedFile.FileName);
                    uploadedFile.SaveAs(Path.Combine(appData, fileName));
                
            
        
    
</script>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form id="Form1" runat="server" enctype="multipart/form-data">
        <a href="#" id="add">Add file</a>
        <div id="files"></div>
        <asp:LinkButton ID="BtnUpload" runat="server" Text="Upload" OnClick="BtnUpload_Click" />
    </form>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript">
        $('#add').click(function () 
            $('#files').append($('<input/>', 
                type: 'file',
                name: 'file' + new Date().getTime()
            ));
            return false;
        );
    </script>
</body>
</html>

【讨论】:

App_data 文件夹不应用于上传此类文件,因为这是为数据库文件等数据保留的特殊文件夹。 @Muhammad Akhtar,这只是一个例子。使用App_Data 文件夹来存储上传的文件并没有什么不好,如 Phil Haack 所示:haacked.com/archive/2010/07/16/…。它不是专门为数据库保留的。 hmm,但我在 2 年前工作时使用此文件夹时遇到问题。我已经在 *** 上发布了这个问题。请检查此***.com/questions/1519790/… @Muhammad Akhtar,您遇到的问题是您试图将此文件夹中的文件直接提供给客户端。这当然是不可能的,因为 ASP.NET 不提供此文件夹中的文件。我通常做的是使用 HTTP 处理程序来提供来自该文件夹的上传文件。这让我可以控制哪个用户访问哪个文件。 嗯,没错。感谢您的澄清。你能给我一个参考链接吗?只是我个人的理解?

以上是关于带有多个文件上传控件的asp.net多次上传的主要内容,如果未能解决你的问题,请参考以下文章

从 jQuery 中选择多个文件后,ASP.Net 上传多个文件

asp.net多文件上传并把路劲保存到SQL数据库

ASP.Net如何用FileUpLoad实现多文件上传

asp.net 一般处理程序(ashx)如何多次接收上传文件(多文件批量上传)

使 ASP.Net 文件上传安全

asp.net怎么用上传控件,上传图片!