www webform subir propiedades net imagen fileupload example eventos datos control cargar carga aspx asp archivos archivo c# asp.net file-upload .net-framework-version httppostedfile

c# - subir - webform upload file



FileUpload Contol no muestra los archivos publicados (3)

Estoy intentando subir varios archivos en una página aspx usando un control FileUpload . Establecí el control para permitir múltiples archivos:

<asp:FileUpload ID="fuAttach" Multiple="Multiple" runat="server" Visible="False" />

Ahora, al hacer clic en un botón, quiero tomar los datos de cada uno de estos archivos y guardarlos en una base de datos (usando un servicio REST, pero eso no es importante en este momento). De acuerdo con Visual Studio, puedo acceder a la propiedad PostedFile , pero no a la propiedad FileUpload control 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?)

Al depurar, sin embargo, la propiedad de PostedFiles es visible y contiene todos mis archivos:

Además, traté de usar Request.Files, pero esto solo me da la identificación del control FileUpload :

Además, mirando el control FileUpload , no hay 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); }

¿Me estoy perdiendo de algo?


Debería ser algo como esto:

<asp:FileUpload runat="server" ID="UploadImages" AllowMultiple="true" />

El código html será así:

<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>

código detrás del botón de carga:

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); } } }


Probablemente llegue demasiado tarde, pero ya que estoy teniendo el mismo problema. Decido publicar mi respuesta aquí para los futuros buscadores de respuestas. Tengo que usar un walk-around para abordar este problema.

dynamic fileUploadControl = fileUpload1; foreach(var file in fileUploadControl.PostedFiles) {//do things here}

la conversión de su archivoUpload userControl a un objeto dinámico le permitirá omitir la comprobación de errores de tiempo de compilación.


Vaya a la pestaña "Aplicación" en el proyecto "Propiedades" y cambie el "Marco de objetivos" a 4.5.