回 帖 发 新 帖 刷新版面

主题:批量上传的问题

现在用asp.net+sqlserver做一个项目,需要上传功能.但是用HtmlInputFile 一次只能上传一个文件,现在要批量上传,又不能直接控制客户端上传,(要求的效果就是在网页上选择文件(夹)点击"上传"就能实现上传这些文件)搞了几天了,还是没有好办法,请问有哪些解决方案呢?

回复列表 (共5个回复)

沙发

用javascript来实现。
例如:
    private Boolean SaveImages() 
        { 
            ///'遍历File表单元素 
            HttpFileCollection files = HttpContext.Current.Request.Files; 

            /// '状态信息 
            System.Text.StringBuilder strMsg = new System.Text.StringBuilder(); 
            strMsg.Append("上传的文件分别是:<hr color=red>"); 
            try 
            { 
                for(int iFile = 0; iFile < files.Count; iFile++) 
                { 
                    ///'检查文件扩展名字 
                    HttpPostedFile postedFile = files[iFile]; 
                    string fileName, fileExtension; 
                    fileName = System.IO.Path.GetFileName(postedFile.FileName); 
                    if (fileName != "") 
                    { 
                        fileExtension = System.IO.Path.GetExtension(fileName); 
                        strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString()+ "<br>"); 
                        strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>"); 
                        strMsg.Append("上传文件的文件名:" + fileName + "<br>"); 
                        strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>"); 
                        ///可根据扩展名字的不同保存到不同的文件夹 
                        ///注意:可能要修改你的文件夹的匿名写入权限。
                        
                            postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + fileName);
                        
                        
                    }         
                } 
                strStatus.Text = strMsg.ToString(); 
                return true; 
            } 
            catch(System.Exception Ex) 
            { 
                strStatus.Text = Ex.Message; 
                return false; 
            } 
        } 


前台:

<HTML>
    <HEAD>
        <title>upload</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script language="javascript">
  function addFile()
  {
  var str = '<input type="file" size="50" name="File">'
  document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
  }
  
        </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server" enctype="multipart/form-data">
            <div align="center">
                <h3>多文件上传</h3>
                <p id="MyFile"><input type="file" size="50" name="file"></p>
                <p>
                    <input type="button" value="增加(Add)" onclick="addFile()"> <input type="button" value="重置(ReSet)" onclick="this.form.reset()">
                    <asp:Button Runat="server" Text="上传" ID="UploadButton"></asp:Button>
                </p>
                <p>
                    <asp:Label ID="strStatus" Runat="server" Font-Name="宋体" Font-Bold="true" Font-Size="9pt" Width="500px"
                        BorderStyle="None" BackColor="white"></asp:Label>
                </p>
            </div>
        </form>
    </body>
</HTML>

板凳

先谢了,我试试,看样子应该可以的

3 楼

我试过了,是可以的,不过要是文件多的话,就很麻烦了,有很多的文件选择,太多了.能不能简化点,比如只选文件夹就行了,好象那个控件不能选择文件夹啊,郁闷,另外,javascript能不能遍历客户端的文件夹?

4 楼

选择文件夹好像不行,就好比发送邮件中的附件,只能选择单个文件,而不能选择文件夹。

5 楼

你自己做个文件浏览器之类的东西,类似于explorer那样,然后让用户选择文件夹的同时自动生成上传文件列表(即该目录下的文件)

我来回复

您尚未登录,请登录后再回复。点此登录或注册