Mam kontrolę przesyłania plików. Teraz po kliknięciu tego chcę wybrać wiele plików.Jak wybrać wiele plików za pomocą Kontroli przesyłania plików?
Jak mogę to zrobić?
Mam kontrolę przesyłania plików. Teraz po kliknięciu tego chcę wybrać wiele plików.Jak wybrać wiele plików za pomocą Kontroli przesyłania plików?
Jak mogę to zrobić?
Właściwość FileUpload.AllowMultiple
w .NET 4.5 i wyższej pozwoli Ci wybrać wiele plików.
<asp:FileUpload ID="fileImages" AllowMultiple="true" runat="server" />
.NET 4 i poniżej
<asp:FileUpload ID="fileImages" Multiple="Multiple" runat="server" />
na stanowisku-back, można następnie:
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
Są inne opcje można korzystać z tych kontroli, które mają wiele opcji przesyłania a te kontrolki mają również obsługę Ajaxa:
1) Flajxian
2) Valums
3) Subgurim FileUpload
Dlaczego nie używać lampy błyskowej & javascript kontroli przesyłania?
Oto pełna przykładem tego, jak można wybrać i przesłać kilka plików w ASP.NET stosując kontrolę przesyłania plików ....
napisać ten kod w pliku .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>
potem napisać ten kod w pliku .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;
}
}
}
}
i gotowe ... Twoja kontrola przesyłania wielu plików jest gotowa ... mam szczęśliwy dzień.
Ten kawałek kodu to wielkie dzięki. Jednak HttpPostedFile.ContentLength jest wyrażany w bajtach, a nie w kilobitach ... –
Można spróbować poniżej kodu:
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
Właśnie natknąć tym genialnie proste rozwiązanie, jeśli używasz .NET 4.5 (nie obsługuje tego łatwo w niższych wersjach) i można użyć jQuery do rzeczy naprawdę prosty i bezbolesny.
Uploading Multiple Files Using jQuery and Generic Handler in ASP.Net 4.5
Oczywiście nie jest komercyjna wersja dla klasycznych ASP, które można znaleźć na ASP Uploader
kodu Defalult.aspx
<asp:FileUpload runat="server" id="fileUpload1" Multiple="Multiple">
</asp:FileUpload>
<asp:Button runat="server" Text="Upload Files" id="uploadBtn"/>
Defalult.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
krok 1: dodaj
<asp:FileUpload runat="server" id="fileUpload1" Multiple="Multiple">
</asp:FileUpload>
krok 2: dodaj
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
To faktycznie działa i powinno być zaakceptowaną odpowiedzią. – Rich
Aby dodać wiele plików skorzystać z poniższego kodu
<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>
serwerze kodu boczny:
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;
}
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);
}
Obiekt FileUpload.AllowMultiple w .NET 4.5 i wyższe pozwoli Ci kontrolę, aby wybrać wiele plików.
Poniżej 4,5 jak 4,0 (VS 2010) możemy użyć jQuery do wielokrotnego przesłanie pliku w pojedynczej kontroli, stosując 2 js pliki: http://code.jquery.com/jquery-1.8.2.js i http://code.google.com/p/jquery-multifile-plugin/
w aspx Prześlij plik tagu, dodaj jak class = "multi "przykładem
<asp:FileUpload ID="FileUpload1" class="multi" runat="server" />
Jeśli chcesz iść do pracy link pobierania próbki.
Zacząłbym od Googling 'asp.net file upload multiple' lub look [tutaj] (http://stackoverflow.com/questions/5508505/multi-file-upload-using-c-sharp-on-asp -net-4-0-environment), [tutaj] (http://stackoverflow.com/questions/1222330/multiple-file-selection-for-uploading-in-asp-net) lub [tutaj] (http://stackoverflow.com/questions/3550154/select-multiple-files-to-upload-in-asp-net-promie- bez -flash) na przepełnieniu stosu – Basic
@Basic - Ironia. Rok później wypróbowałem w Google plik "asp.net file upload multiple", a Twój komentarz oznacza, że pojawi się na szczycie. –
@Rudi Przepraszamy! Przynajmniej dałem trzy dobre linki ... – Basic