2016-01-28 17 views
0

我有一個asp.net web應用程序節省了所有的細節進入和結束時發送電子郵件的所有細節,包括文件上傳功能(所有這些作品)。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> 
       <a href="#" class="input-group-addon btn btn-default fileinput-exists" data-dismiss="fileinput"> 
        <span class="glyphicon glyphicon-remove" title="Remove selected file."></span> 
       </a> 
      </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> 

代碼背後

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"; 
} 

回答

0

只給你關於如何實現它的想法...存儲對象的列表,以您的會話..

MyFile的對象:

class MyFile 
{ 
    public Guid Id { get; set; } 
    public byte[] Content { get; set; } 
    public string ContentType { get; set; } 
    public string Name { get; set; } 
    public MyFile() 
    { 
     Id = Guid.NewGuid(); 
    } 
} 

更新:新增視圖代碼

查看:

<asp:ListView ID="uploadedFileList" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td><%# Eval("Name")%></td> 
      <td><%# Eval("ContentType")%></td> 
      <td><asp:LinkButton Text="Remove" ID="lkbCommandAction" CommandArgument='<%# Eval("Id") %>' OnCommand="lkbCommandAction_Command" runat="server" /></td> 
     </tr> 
    </ItemTemplate> 
    <LayoutTemplate> 
     <table id="tbl1" runat="server"> 
      <tr id="tr1" runat="server"> 
       <td id="td1" runat="server">File Name</td> 
       <td id="td2" runat="server">Content-Type</td> 
       <td id="td3" runat="server"></td> 
      </tr> 
      <tr id="ItemPlaceholder" runat="server"> 
      </tr> 
     </table> 
    </LayoutTemplate> 
</asp:ListView> 

代碼背後:

var file = fuAttachment.PostedFile; 
      if (file != null && fuAttachment.PostedFile.FileName != "") 
      { 
       var content = new byte[file.ContentLength]; 
       file.InputStream.Read(content, 0, content.Length); 
       List<MyFile> myUploadedFiles = null; 

       if(Session["UploadedFiles"] == null) 
       { 
        myUploadedFiles = new List<MyFile>(); 
       } 
       else 
       { 
        myUploadedFiles = (List<MyFile>)Session["UploadedFiles"]; 
       } 

       myUploadedFiles.Add(new MyFile() 
       { 
        Content = content, 
        ContentType = file.ContentType, 
        Name = file.FileName 
       }); 

       Session["UploadedFiles"] = myUploadedFiles; 
      } 
      else 
      { 
       Session["UploadedFiles"] = null; 
      } 

uploadedFileList.DataSource = myUploadedFiles; 
uploadedFileList.DataBind(); 

protected void lkbCommandAction_Command(object sender, CommandEventArgs e) 
    { 
     if (e.CommandArgument == null) 
     { 
      /*TODO*/ 
     } 
     else 
     { 
      List<MyFile> myUploadedFiles = null; 

       if(Session["UploadedFiles"] == null) 
       { 
        myUploadedFiles = new List<MyFile>(); 
       } 
       else 
       { 
        myUploadedFiles = (List<MyFile>)Session["UploadedFiles"]; 
       } 

       Guid removeId= (Guid)e.CommandArgument; 
       MyFile fileToRemove = myUploadedFiles.FIrstOrDefault(ff => ff.Id == removeId); 
       if(fileToRemove != null) 
       { 
        myUploadedFiles.Remove(fileToRemove); 
       } 
       uploadedFileList.DataSource = myUploadedFiles; 
       uploadedFileList.DataBind(); 
     } 
    } 

既然你現在在你的會話文件的列表,你可以跟蹤文件名,內容類型等,由用戶上傳文件,並做他們想要的。

+0

感謝您的回答,但我怎麼會得到它,所以它會爲每個文件爲一個表在我看來一個條目時的「添加」按鈕被點擊 – murday1983

+0

我更新了我的答案 –