Как загрузить файл из динамически созданного элемента управления FileUpload с помощью ASP.NET? - PullRequest
0 голосов
/ 17 декабря 2008

В моем коде, прикрепленном ниже, я пытаюсь загрузить файл через ASP.NET. Я динамически создаю элемент управления FileUpload, так что это означает, что он отсутствует в моем ViewState, что (я думаю) означает, что я не могу использовать элемент управления для загрузки файлов, если я не использую старомодный способ многопоточности / формы данных, который я не хочу делать. Мне нужно иметь возможность разрешить пользователю создавать несколько полей 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>

Ответы [ 3 ]

2 голосов
/ 17 декабря 2008

Вы можете использовать Request.Files

Содержит загруженные файлы в виде объектов HttpPostedFile.

foreach(HttpPostedFile file in Request.Files)
  file.SaveAs(...);
1 голос
/ 17 декабря 2008

вот более длинная версия выше: 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);
    }
  }");
0 голосов
/ 17 декабря 2008

Проблема заключается в том, что элемент управления FileUpload заблокировал параметр FileName от программной установки. Причина этого заключается в том, чтобы защитить пользователя от какого-либо вредоносного сценария, решающего, что он хочет загрузить системные файлы на сервер вместо того, что хочет пользователь.

Вы не сможете использовать элемент управления FileUpload в ситуации, которую вы описали выше, вы захотите найти альтернативу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...