В моем коде, прикрепленном ниже, я пытаюсь загрузить файл через ASP.NET. Я динамически создаю элемент управления FileUpload, так что это означает, что его нет в моем ViewState, что (я думаю) означает, что я не могу использовать элемент управления для загрузки файлов, если я не использую старомодный способ multipat / form-data, который я не хочу делать. Мне нужно разрешить пользователю создавать несколько полей FileUpload, а затем, когда они нажимают кнопку «Загрузить файл (ы)», он перебирает все поля FileUpload и загружает их на сервер.
Я уверен, что есть способ сделать это, о котором я просто не думаю - TIA!
<%@ Page Language = "VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat = "server">
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim fup As New FileUpload()
fup.ID = "FileUpload1"
PlaceHolder1.Controls.Add(fup)
End Sub
Protected Sub btnUploadFile_Click(ByVal sender As Object, ByVal e As System.EventArgs)
' HOW DO I GET THE FILE THAT WAS SELECTED IN THE DYNAMICALLY CREATE FILEUPLOAD CONTROL?
End Sub
</script>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title></title>
</head>
<body>
<form id = "form1" runat = "server">
<div style = "padding:13px">
<asp:Button ID = "btnAdd" runat = "server" Text = "Add FileUpload Control" OnClick = "btnAdd_Click" />
<br /><br />
<asp:PlaceHolder ID = "PlaceHolder1" runat = "server" />
<br /><br />
<asp:Button ID = "btnUploadFile" runat = "server" Text = "Upload File(s)" OnClick = "btnUploadFile_Click" />
</div>
</form>
</body>
</html>





Вы можете использовать Request.Files
Он содержит загруженные файлы как объекты HttpPostedFile.
foreach(HttpPostedFile file in Request.Files)
file.SaveAs(...);
Проблема в том, что элемент управления FileUpload заблокировал программную установку параметра FileName. Причина этого в том, чтобы защитить пользователя от вредоносного сценария, который решает, что он хочет загрузить системные файлы на сервер вместо того, что хочет пользователь.
Вы не сможете использовать элемент управления FileUpload в описанной выше ситуации, вам нужно будет найти альтернативу.
вот более длинная версия вышеизложенного: C#
print("HttpFileCollection UploadedFiles = Request.Files;
HttpPostedFile UserPostedFile;
int UploadFileCount = UploadedFiles.Count;
if (UploadFileCount >= 1)
{
for (int i = 0; i < UploadFileCount; ++i)
{
UserPostedFile = UploadedFiles[i];
UserPostedFile.SaveAs(UserPostedFile.FileName);
}
}");