Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文件上载控件不显示已发布的文件_C#_Asp.net_File Upload_.net Framework Version_Httppostedfile - Fatal编程技术网

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}