7

Bir FileUpload denetimini kullanarak bir aspx sayfasında birden fazla dosya yüklemeye çalışıyorum. Ben birden fazla dosya için izin vermek kontrolü belirledik:FileUpload Contol kaydedilmiş dosyaları göstermiyor

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

Şimdi, bu dosyaların her birinin verilerini almak ve REST hizmetini kullanarak (bir veritabanına kaydetmek ister bir düğmeye tıklayarak ilgili, ama bu şu anda önemli değil). Visual Studio'ya göre, FileUpload denetiminin PostedFiles özelliğini değil PostedFile özelliğine erişebilirim.

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

ayıklama Ancak PostedFiles mülkiyet görülebilir ve benim tüm dosyaları içerir: Ayrıca

Posted Files

, ben Request.Files kullanarak çalıştı ama bu sadece bana ait id verir FileUpload kontrolü: Ayrıca

Request.Files

,bakıyorkontrolü, hiçbir PostedFiles vardır:

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

Burada bir şey eksik?

+0

Diğer bağlantıların başlangıç ​​noktası: http://stackoverflow.com/questions/17441925/how-to-choose-multiple-files-using-file-upload-control –

cevap

1

Böyle bir şey olmalıdır:

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

html kodu şöyle olacaktır:

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

kod arkasında yükleme düğmesi için:

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

muhtemelen ben de gelip geç, ama aynı problemi yaşadığımdan beri. Gelecekte cevap arayanlar için cevabımı buraya göndermeye karar verdim. Bu sorunu çözmek için bir yürüyüş kullanmalıyım. Dinamik bir nesneye senin FileUpload UserControl'ın dönüştürme

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

derleme zamanı hata denetimini atlamasına izin verecektir.

9

"Özellikler" projesindeki "Uygulama" sekmesine gidin ve "Hedef Çerçeveyi" 4,5 olarak değiştirin.

+0

Bu işe yaradı. Bir çeşit sürüm sorunu olduğundan şüpheleniyorum. Teşekkürler. – glitzsfa

+0

Günlerce bunun için bir yanıt arıyordum ve hedef çerçeveyi 4,5 olarak değiştiriyordum. Teşekkür ederim!!! – Andy

+0

Mantıksal olarak cevabınız doğru – SUN

İlgili konular