如何使用文件上载控制select多个文件?

我有一个file uploadcontrol.Now点击,我想select多个文件。

我怎么能这样做?

.NET 4.5及更高版本中FileUpload.AllowMultiple属性将允许您控制select多个文件。

 <asp:FileUpload ID="fileImages" AllowMultiple="true" runat="server" /> 

.NET 4及以下版本

  <asp:FileUpload ID="fileImages" Multiple="Multiple" runat="server" /> 

在回邮后,您可以:

  Dim flImages As HttpFileCollection = Request.Files For Each key As String In flImages.Keys Dim flfile As HttpPostedFile = flImages(key) flfile.SaveAs(yourpath & flfile.FileName) Next 

这里是一个完整的例子,你如何使用file upload控件在asp.net中select和上传多个文件….

在.aspx文件中写入此代码

 <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server" enctype="multipart/form-data"> <div> <input type="file" id="myfile" multiple="multiple" name="myfile" runat="server" size="100" /> <br /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <br /> <asp:Label ID="Span1" runat="server"></asp:Label> </div> </form> </body> </html> 

之后,在.aspx.cs文件中写入此代码..

  protected void Button1_Click(object sender,EventArgs e) { string filepath = Server.MapPath("\\Upload"); HttpFileCollection uploadedFiles = Request.Files; Span1.Text = string.Empty; for(int i = 0;i < uploadedFiles.Count;i++) { HttpPostedFile userPostedFile = uploadedFiles[i]; try { if (userPostedFile.ContentLength > 0) { Span1.Text += "<u>File #" + (i + 1) + "</u><br>"; Span1.Text += "File Content Type: " + userPostedFile.ContentType + "<br>"; Span1.Text += "File Size: " + userPostedFile.ContentLength + "kb<br>"; Span1.Text += "File Name: " + userPostedFile.FileName + "<br>"; userPostedFile.SaveAs(filepath + "\\" + Path.GetFileName(userPostedFile.FileName)); Span1.Text += "Location where saved: " + filepath + "\\" + Path.GetFileName(userPostedFile.FileName) + "<p>"; } } catch(Exception Ex) { Span1.Text += "Error: <br>" + Ex.Message; } } } } 

并在这里你去…你的多个file upload控制准备好了..有一个快乐的一天。

第1步:添加

 <asp:FileUpload runat="server" id="fileUpload1" Multiple="Multiple"> </asp:FileUpload> 

第2步:添加

 Protected Sub uploadBtn_Click(sender As Object, e As System.EventArgs) Handles uploadBtn.Click Dim ImageFiles As HttpFileCollection = Request.Files For i As Integer = 0 To ImageFiles.Count - 1 Dim file As HttpPostedFile = ImageFiles(i) file.SaveAs(Server.MapPath("Uploads/") & ImageFiles(i).FileName) Next End Sub 
  aspx code <asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" /> <asp:Button ID="btnUpload" Text="Upload" runat="server" OnClick ="UploadMultipleFiles" accept ="image/gif, image/jpeg" /> <hr /> <asp:Label ID="lblSuccess" runat="server" ForeColor ="Green" /> Code Behind: protected void UploadMultipleFiles(object sender, EventArgs e) { foreach (HttpPostedFile postedFile in FileUpload1.PostedFiles) { string fileName = Path.GetFileName(postedFile.FileName); postedFile.SaveAs(Server.MapPath("~/Uploads/") + fileName); } lblSuccess.Text = string.Format("{0} files have been uploaded successfully.", FileUpload1.PostedFiles.Count); } 

还有其他的select,你可以使用这些控件有多个上传选项,这些控件也有Ajax支持

1) Flajxian
2) 评量
3) Subgurimfile upload

default.aspx代码

 <asp:FileUpload runat="server" id="fileUpload1" Multiple="Multiple"> </asp:FileUpload> <asp:Button runat="server" Text="Upload Files" id="uploadBtn"/> 

default.aspx.vb

 Protected Sub uploadBtn_Click(sender As Object, e As System.EventArgs) Handles uploadBtn.Click Dim ImageFiles As HttpFileCollection = Request.Files For i As Integer = 0 To ImageFiles.Count - 1 Dim file As HttpPostedFile = ImageFiles(i) file.SaveAs(Server.MapPath("Uploads/") & file.FileName) Next End Sub 

要添加多个文件使用下面的代码

 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .fileUpload{ width:255px; font-size:11px; color:#000000; border:solid; border-width:1px; border-color:#7f9db9; height:17px; } </style> </head> <body> <form id="form1" runat="server"> <div> <div id="fileUploadarea"><asp:FileUpload ID="fuPuzzleImage" runat="server" CssClass="fileUpload" /><br /></div><br /> <div><input style="display:block;" id="btnAddMoreFiles" type="button" value="Add more images" onclick="AddMoreImages();" /><br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Upload" /> </div> </div> <script language="javascript" type="text/javascript"> function AddMoreImages() { if (!document.getElementById && !document.createElement) return false; var fileUploadarea = document.getElementById("fileUploadarea"); if (!fileUploadarea) return false; var newLine = document.createElement("br"); fileUploadarea.appendChild(newLine); var newFile = document.createElement("input"); newFile.type = "file"; newFile.setAttribute("class", "fileUpload"); if (!AddMoreImages.lastAssignedId) AddMoreImages.lastAssignedId = 100; newFile.setAttribute("id", "FileUpload" + AddMoreImages.lastAssignedId); newFile.setAttribute("name", "FileUpload" + AddMoreImages.lastAssignedId); var div = document.createElement("div"); div.appendChild(newFile); div.setAttribute("id", "div" + AddMoreImages.lastAssignedId); fileUploadarea.appendChild(div); AddMoreImages.lastAssignedId++; } </script> </form> </body> </html> 

服务器端代码:

 try { HttpFileCollection hfc = Request.Files; for (int i = 0; i < hfc.Count; i++) { HttpPostedFile hpf = hfc[i]; if (hpf.ContentLength > 0) { hpf.SaveAs(Server.MapPath("~/uploads/") +System.IO.Path.GetFileName(hpf.FileName); } } } catch (Exception) { throw; } 

.NET 4.5及更高版本中的FileUpload.AllowMultiple属性将允许您控制select多个文件。

4.5之下像4.0(vs 2010),我们可以使用jquery在单个控件中使用多个file upload,使用2个js文件: http: //code.jquery.com/jquery-1.8.2.js和http://代码。 google.com/p/jquery-multifile-plugin/

在aspxfile upload标签中,添加如class =“multi”

 <asp:FileUpload ID="FileUpload1" class="multi" runat="server" /> 

如果你想工作的例子去链接下载示例。

你可以尝试下面的代码:

  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim j As Integer = 0 Dim hfc As HttpFileCollection = Request.Files Dim PathName As String For i As Integer = 0 To hfc.Count - 1 Dim hpf As HttpPostedFile = hfc(i) If hpf.ContentLength > 0 Then hpf.SaveAs(Server.MapPath("~/E:\") & System.IO.Path.GetFileName(hpf.FileName)) PathName = Server.MapPath(hpf.FileName) If j < hfc.Count Then Dim strConnString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString Dim sqlquery As String sqlquery = "Insert_proc" Dim con As New SqlConnection(strConnString) Dim cmd As New SqlCommand(sqlquery, con) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@FilePath", SqlDbType.VarChar).Value = PathName j = j + 1 Try con.Open() cmd.ExecuteNonQuery() Catch ex As Exception Throw ex Finally con.Close() con.Dispose() End Try If j = hfc.Count Then Exit Sub End If End If End If Next Catch generatedExceptionName As Exception Throw End Try End Sub 

如果你正在使用.Net 4.5(在低版本中不支持这个function),我只是遇到了这个非常简单的解决scheme,你可以使用jQuery来使事情变得非常简单和轻松。

在ASP.Net 4.5中使用jQuery和Generic Handler上传多个文件

当然,在ASP Uploader上可以find传统ASP的商业版本

为什么不使用Flash和JavaScript上传控制?

http://www.uploadify.com/demos/