7

Ich versuche, mehrere Dateien auf einer aspx-Seite mit einem FileUpload Steuerelement hochzuladen. Ich habe den Steuersatz für mehrere Dateien zu ermöglichen:FileUpload Contol zeigt keine geposteten Dateien an

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

nun auf dem Klick auf eine Schaltfläche ich die Daten von jedem dieser Dateien machen will und es in eine Datenbank speichern (einen REST-Service, aber das ist im Moment nicht wichtig). Laut Visual Studio kann ich auf die Eigenschaft zugreifen, aber nicht die PostedFiles Eigenschaft der FileUpload Kontrolle.

'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?) 

Wenn das Debuggen, aber die PostedFiles Eigenschaft sichtbar und enthält alle meine Dateien:

Posted Files

Auch ich Request.Files versucht mit, aber das gibt mir nur die ID der FileUpload Kontrolle:

Request.Files

auch amsuchenKontrolle gibt es keine 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); 
} 

Fehle ich etwas hier?

+0

Ausgangspunkt für andere Links: http://stackoverflow.com/questions/17441925/how-to-choose-multiple-files-using-file-upload-control –

Antwort

1

Es sollte wie folgt sein:

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

HTML-Code wird so sein:

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

Code hinter für den Upload-Button:

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

ich wahrscheinlich auch kommen spät, aber da ich das gleiche Problem habe. Ich entscheide mich, meine Antwort hier für zukünftige Suchende zu posten. Ich muss einen Spaziergang machen, um dieses Problem anzugehen.

Wenn Sie Ihr fileUpload userControl in ein dynamisches Objekt konvertieren, können Sie die Fehlerüberprüfung beim Kompilieren umgehen.

9

Gehen Sie im Projekt "Eigenschaften" auf die Registerkarte "Anwendung" und ändern Sie das "Zielframework" auf 4.5.

+0

Dies funktionierte perfekt. Ich vermutete, dass es ein Versions-Problem gab. Vielen Dank. – glitzsfa

+0

Ich habe tagelang nach einer Antwort gesucht und das Zielframework auf 4.5 geändert. Vielen Dank!!! – Andy

+0

Logisch ist deine Antwort korrekt – SUN