我正在尝试使用一个FileUpload
控件在aspx页面上上传多个文件。我已将控件设置为允许多个文件:
<asp:FileUpload ID="fuAttach" Multiple="Multiple" runat="server" Visible="False" />
现在,点击一个按钮,我想获取每个文件的数据并将其保存到数据库中(使用REST服务,但现在这并不重要)。根据Visual Studio,我可以访问PostedFile
属性,但不能访问PostedFiles
控件的FileUpload
属性。
'System.Web.UI.WebControls.FileUpload' does not contain a definition for 'PostedFiles' and no extension method 'PostedFiles' accepting a first argument of type 'System.Web.UI.WebControls.FileUpload' could be found (are you missing a using directive or an assembly reference?)
调试时,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);
}
我在这里错过了什么吗?
答案 0 :(得分:9)
转到项目“属性”中的“应用程序”选项卡,将“目标框架”更改为4.5。
答案 1 :(得分:5)
我可能来得太晚了,但因为我遇到了同样的问题。 我决定在这里发布我的答案,以便将来找到答案。 我必须使用绕行来解决这个问题。
dynamic fileUploadControl = fileUpload1;
foreach(var file in fileUploadControl.PostedFiles)
{//do things here}
将fileUpload userControl转换为动态对象将允许您绕过编译时错误检查。
答案 2 :(得分:2)
它应该是这样的:
<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);
}
}
}