gpt4 book ai didi

asp.net - 如何上传 ASP.NET Repeater 项目中 FileUpload 控件中的所有文件?

转载 作者:行者123 更新时间:2023-12-04 14:42:41 25 4
gpt4 key购买 nike

我有一个 ASP.NET Repeater 控件,其项模板中有一个 FileUpload 控件。 ASP.NET Repeater 位于 UpdatePanel 中,作为由 ASP.NET Multiview 制作的向导的一部分。单击提交时,我试图上传每个 FileUpload 控件中的每个文件,但是当我提交表单时,FileUpload 控件不保留文件。相关代码如下:

<asp:Repeater ID="RepeaterImages" runat="server" OnItemCommand="RepeaterBoxArts_ItemCommand">
<ItemTemplate>
<tr>
<td class="right">
Choose File:
</td>
<td>
<asp:FileUpload ID="FileUpload" runat="server" />
</td>
</tr>
</ItemTemplate>

foreach (RepeaterItem item in RepeaterImages.Items)
{
if (item.ItemType == ListItemType.Item
|| item.ItemType == ListItemType.AlternatingItem)
{
FileUpload fupload = (FileUpload)item.FindControl("FileUpload");
if (fupload.HasFile)
{
string path = Server.MapPath("~/images/");
fupload.SaveAs(path);

}
}
}

当我单击“提交”时,我希望所有带有文件的 FileUpload 控件上传它们的文件。但是,如果我运行步骤调试器,它会显示每个 FileUpload 控件都没有文件。这似乎是回发的问题,但我不是 100% 确定。

最佳答案

我遇到了同样的问题并解决了添加这段代码

OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"

在将上传所有图像的按钮上。

这个问题的答案,我在这个链接https://stackoverflow.com/a/217722找到了

请参阅下面的代码:

在页面ASPX中

<asp:Repeater ID="rptUpload" runat="server" OnItemDataBound="rptUpload_ItemDataBound">
<HeaderTemplate>
<table width="100%">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:FileUpload ID="fu" runat="server" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

<p>
<asp:ImageButton ID="btnUpload" runat="server" OnClick="btnUpload" ImageUrl="img/icon_upload.png" OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';" />
</p>

在代码隐藏中

protected void btnUpload_Click(object sender, ImageClickEventArgs e)
{
try
{
foreach (RepeaterItem item in rptUpload.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
FileUpload fu = (FileUpload)item.FindControl("fu");
if (fu.HasFile)
{
string path = Server.MapPath("~/images/");
string fileName = Path.GetFileName(fu.FileName);
string fileExt = Path.GetExtension(fu.FileName).ToLower();
fu.SaveAs(path + fileName + fileExt);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}

关于asp.net - 如何上传 ASP.NET Repeater 项目中 FileUpload 控件中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com