C# ASP.net文件上载以填充表,但在会话中保存所有文件
我有一个asp.net web应用程序,它保存输入的所有详细信息,并在最后发送一封包含所有详细信息的电子邮件,包括文件上载功能(所有这些都有效) 我遇到的问题是需要更改文件上载页面。我希望现在能够上传多个文档,这样用户基本上可以找到要上传的文件,然后单击“添加”按钮。然后应清除上载文件,并用上载文件填充表格,并执行编辑或删除操作 正如我所说,我有一个文件上传工作使用代码背后,但我不知道如何实现我的目标,使所有上传的文件都在我的电子邮件中发送 HTMLC# ASP.net文件上载以填充表,但在会话中保存所有文件,c#,asp.net,webforms,C#,Asp.net,Webforms,我有一个asp.net web应用程序,它保存输入的所有详细信息,并在最后发送一封包含所有详细信息的电子邮件,包括文件上载功能(所有这些都有效) 我遇到的问题是需要更改文件上载页面。我希望现在能够上传多个文档,这样用户基本上可以找到要上传的文件,然后单击“添加”按钮。然后应清除上载文件,并用上载文件填充表格,并执行编辑或删除操作 正如我所说,我有一个文件上传工作使用代码背后,但我不知道如何实现我的目标,使所有上传的文件都在我的电子邮件中发送 HTML <div class="form-gr
<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>
只是给你一个如何实施的想法。。。将对象列表存储到会话中 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();
}
}
更新:添加了视图代码
视图:
文件名
内容类型
代码隐藏:
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();
}
}
var file=fuAttachment.PostedFile;
如果(file!=null&&fuAttachment.PostedFile.FileName!=“”)
{
var content=新字节[file.ContentLength];
file.InputStream.Read(content,0,content.Length);
List myUploadedFiles=null;
if(会话[“UploadedFiles”]==null)
{
myUploadedFiles=新列表();
}
其他的
{
myUploadedFiles=(列表)会话[“UploadedFiles”];
}
myUploadedFiles.Add(新建MyFile()
{
内容=内容,
ContentType=file.ContentType,
Name=file.FileName
});
会话[“UploadedFiles”]=myUploadedFiles;
}
其他的
{
会话[“UploadedFiles”]=null;
}
uploadedFileList.DataSource=myUploadedFiles;
uploadedFileList.DataBind();
受保护的void lkbCommandAction_命令(对象发送方,CommandEventArgs e)
{
if(e.CommandArgument==null)
{
/*待办事项*/
}
其他的
{
List myUploadedFiles=null;
if(会话[“UploadedFiles”]==null)
{
myUploadedFiles=新列表();
}
其他的
{
myUploadedFiles=(列表)会话[“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();
}
}
由于您现在在会话中有一个文件列表,您可以跟踪用户上传的文件的文件名、内容类型等,并对其执行所需操作。谢谢您的回答,但我如何获得它,以便在单击“添加”按钮时,在我的视图中将每个文档的条目添加到表中
<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();
}
}