Car*_*rel 7 c# asp.net file-upload .net-framework-version httppostedfile
我试图使用一个FileUpload控件在aspx页面上上传多个文件.我已将控件设置为允许多个文件:
<asp:FileUpload ID="fuAttach" Multiple="Multiple" runat="server" Visible="False" />
Run Code Online (Sandbox Code Playgroud)
现在,在单击按钮时,我想获取每个文件的数据并将其保存到数据库(使用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?)
Run Code Online (Sandbox Code Playgroud)
在调试时,该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);
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
小智 5
我可能来得太晚了,但是因为我遇到了同样的问题.我决定在这里发布我的答案,以便将来找到答案.我必须使用一个绕行来解决这个问题.
dynamic fileUploadControl = fileUpload1;
foreach(var file in fileUploadControl.PostedFiles)
{//do things here}
Run Code Online (Sandbox Code Playgroud)
将fileUpload userControl转换为动态对象将允许您绕过编译时错误检查.
它应该是这样的:
<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
上传按钮后面的代码:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10390 次 |
| 最近记录: |