2016-03-29 2 views
0

У меня есть веб-приложение ASP.net, которое сохраняет все данные, введенные в сеанс и в конце, отправляет электронное письмо со всеми подробностями, включая вложение загруженного файла (все это в настоящее время отлично работает).Asp.net Несколько загрузок файлов

Проблема заключается в том, что для загрузки файла требуется изменение. Я хочу теперь иметь возможность загружать несколько документов, но отдельно, поэтому в основном пользователь находит файл для загрузки, а затем нажимает кнопку «Добавить». Затем поле загружаемого файла должно быть очищено, а таблица должна заполнить загруженный файл (ы) кнопкой «Удалить/Удалить» для каждого загруженного файла.

Детали, которые должны быть отображены в этой таблице:

  • Имя файла
  • Опция выбрана форма новый выпадающий список
  • кнопку Удалить

Как я сказал, что я одного загрузка файлов работает с использованием кода позади, но я понятия не имею, как реализовать то, что мне нужно, чтобы все загруженные документы были отправлены в мой адрес электронной почты.

Текущий HTML

<div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-5"> 
      <div class="fileinput fileinput-new input-group" data-provides="fileinput"> 
       <div class="form-control" data-trigger="fileinput" style="background-color: #ededed"> 
        <span class="fileinput-filename"></span> 
       </div> 
       <span class="input-group-addon btn btn-default btn-file"> 
        <span class="fileinput-new"> 
         <span class="glyphicon glyphicon-folder-open" title="Click to select a file."></span> 
        </span> 
        <span class="fileinput-exists"> 
         <span class="glyphicon glyphicon-folder-open" title="Click to change the selected file."></span> 
        </span> 
        <input type="file" name="..." id="fuAttachment" runat="server" /> 
       </span> 
      </div> 
    </div> 
    <div class="col-sm-3"> 
      <asp:DropDownList ID="Step03WebTypeDD" runat="server" class="form-control"> 
       <asp:ListItem Value="- - Please select - -">- - Please select - -</asp:ListItem> 
       <asp:ListItem Value="Requirements">Requirements</asp:ListItem> 
       <asp:ListItem Value="Functional specification">Functional specification</asp:ListItem> 
       <asp:ListItem Value="Page Content">Page Content</asp:ListItem> 
       <asp:ListItem Value="Page Designs">Page Designs</asp:ListItem> 
       <asp:ListItem Value="Page Designs">Other</asp:ListItem> 
      </asp:DropDownList> 
    </div> 
    <div class="col-sm-1">          
      <asp:LinkButton ID="UploadAddButton" runat="server" OnClick="Step05UploadAddButton_Click" CssClass="btn btn-success pull-right" ToolTip="Click to upload the file."> 
       <span class="glyphicon glyphicon-plus"></span> Add 
      </asp:LinkButton> 
    </div> 
</div> 

Текущий код За

protected void Step05UploadAddButton_Click(object sender, EventArgs e) 
{ 
    var file = fuAttachment.PostedFile; 
    if (file != null && fuAttachment.PostedFile.FileName != "") 
    { 
      var content = new byte[file.ContentLength]; 
      file.InputStream.Read(content, 0, content.Length); 
      Session["FileContent"] = content; 
      Session["FileContentType"] = file.ContentType; 
      Session["File"] = fuAttachment.PostedFile.FileName; 
      Session["AttachmentProvided"] = "Yes"; 
    } 
    else 
    { 
      Session["FileContent"] = ""; 
      Session["FileContentType"] = ""; 
      Session["File"] = ""; 
      Session["AttachmentProvided"] = "No"; 
    } 
} 

Мой код позади не отражает вариант, выбранный, но нужно будет, чтобы я мог показать его на моей странице подтверждения (HTML, показанный ниже)

<div class="form-group"> 
     <asp:Label ID="Label6" class="col-xs-6 col-sm-3 control-label" runat="server" Text="Attachment provided:"></asp:Label> 
     <div class="col-xs-6 col-sm-9 form-control-static"> 
      <% if (Session["AttachmentProvided"] == "Yes") 
      {%> 
       Yes (<%=Session["File"] %>) 
      <%} 
      else 
      { %> 
       No 
      <%} %> 
     </div> 
    </div> 

ответ

1

Вы можете использовать JavaScript для добавления дополнительных дополнительных элементов <input type="file" /> в DOM и в общих чертах обращаться ко всем файлам, используя Request.Files, как указано на MSDN. Образец, взятый из MSDN:

Files = Request.Files; // Load File collection into HttpFileCollection variable. 
arr1 = Files.AllKeys; // This will get names of all files into a string array. 
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{ 
    Response.Write("File: " + Server.HtmlEncode(arr1[loop1]) + "<br />"); 
    Response.Write(" size = " + Files[loop1].ContentLength + "<br />"); 
    Response.Write(" content type = " + Files[loop1].ContentType + "<br />"); 
} 
Смежные вопросы