C# 文件上载控件不显示已发布的文件
我试图使用一个C# 文件上载控件不显示已发布的文件,c#,asp.net,file-upload,.net-framework-version,httppostedfile,C#,Asp.net,File Upload,.net Framework Version,Httppostedfile,我试图使用一个FileUpload控件在一个aspx页面上上载多个文件。我已将控件设置为允许多个文件: <asp:FileUpload ID="fuAttach" Multiple="Multiple" runat="server" Visible="False" /> 但是,调试时,PostedFiles属性可见,并包含我的所有文件: 此外,我还尝试使用Request.Files,但这只提供了FileUpload控件的id: 另外,查看FileUpload控件,没有Poste
FileUpload
控件在一个aspx页面上上载多个文件。我已将控件设置为允许多个文件:
<asp:FileUpload ID="fuAttach" Multiple="Multiple" runat="server" Visible="False" />
但是,调试时,PostedFiles
属性可见,并包含我的所有文件:
此外,我还尝试使用Request.Files,但这只提供了FileUpload
控件的id:
另外,查看FileUpload
控件,没有PostedFiles
:
public class FileUpload : WebControl
{
public FileUpload();
public byte[] FileBytes { get; }
public Stream FileContent { get; }
public string FileName { get; }
public bool HasFile { get; }
public HttpPostedFile PostedFile { get; }
protected override void AddAttributesToRender(HtmlTextWriter writer);
protected internal override void OnPreRender(EventArgs e);
protected internal override void Render(HtmlTextWriter writer);
public void SaveAs(string filename);
}
我是不是遗漏了什么?应该是这样的:
<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />
html代码如下所示:
<div>
<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />
<asp:Button runat="server" ID="uploadedFile" Text="Upload" OnClick="uploadFile_Click" />
<asp:Label ID="listofuploadedfiles" runat="server" />
</div>
上传按钮的代码隐藏:
protected void uploadFile_Click(object sender, EventArgs e)
{
if (UploadImages.HasFiles)
{
foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles)
{
uploadedFile.SaveAs(System.IO.Path.Combine(Server.MapPath("~/Images/"),
uploadedFile.FileName)); listofuploadedfiles.Text += String.Format("{0}<br />", uploadedFile.FileName);
}
}
}
受保护的无效上载文件\u单击(对象发送方,事件参数e)
{
if(上传images.HasFiles)
{
foreach(UploadImages.PostedFiles中的HttpPostedFile uploadedFile)
{
uploadedFile.SaveAs(System.IO.Path.Combine(Server.MapPath(“~/Images/”)),
uploadedFile.FileName);listofUploadedFile.Text+=String.Format(“{0}
”,uploadedFile.FileName);
}
}
}
我可能来晚了,但因为我也有同样的问题。
我决定把我的答案贴在这里,以供将来的求职者参考。
我不得不四处走走来解决这个问题
dynamic fileUploadControl = fileUpload1;
foreach(var file in fileUploadControl.PostedFiles)
{//do things here}
将fileUpload userControl转换为动态对象将允许您绕过编译时错误检查。转到项目“属性”中的“应用程序”选项卡,并将“目标框架”更改为4.5。其他链接的起点:这非常有效。我怀疑存在某种版本问题。谢谢。我已经搜索了好几天了,并且把目标框架改成了4.5。非常感谢。我的已设置为4.5.2,但当我将其设置为4.6.1,然后返回到4.5.2时,它已将其修复,我的项目现在正在构建,太奇怪了。。。
dynamic fileUploadControl = fileUpload1;
foreach(var file in fileUploadControl.PostedFiles)
{//do things here}