2011-07-25 14 views
5

Całkiem nowy system Windows Azure. Śledziłem ten samouczek: tutorial. Działa to doskonale, jednak jednym ograniczeniem jest to, że w przypadku aplikacji, którą mam na myśli, konieczne jest stosunkowo szybkie przesyłanie wielu plików.Przesyłanie wielu plików do magazynu Azure Blob

Czy można zmodyfikować samouczek, aby obsługiwał przesyłanie wielu plików, np. Użytkownik może użyć kliknięcia z wciśniętym klawiszem Shift, aby wybrać wiele plików.

A może ktoś zna jakieś dobre samouczki opisujące powyższe?

Każda pomoc jest mile widziana,

Dzięki

Odpowiedz

8

chciałbym przyjrzeć się tej tutorial z DotNetCurry który pokazuje, jak utworzyć wielokrotne przesyłanie plików przy użyciu jQuery obsłużyć wielokrotne przesyłanie plików do ASP Strona .NET. Jest zbudowany przy użyciu ASP.NET 3.5, ale nie powinno to mieć znaczenia, jeśli korzystasz z .NET 4 - nie ma w tym nic szalonego.

Ale kluczem jest to, że wtyczka jQuery pozwoli ci przesłać kolekcję plików na serwer. Kod ASP.NET za które będzie obsługiwać poprzez zapętlenie poprzez Request.Files kolekcji:

HttpFileCollection hfc = Request.Files; 
    for (int i = 0; i < hfc.Count; i++) 
    { 
     HttpPostedFile hpf = hfc[i]; 
     if (hpf.ContentLength > 0) 
     { 
      hpf.SaveAs(Server.MapPath("MyFiles") + "\\" + 
       System.IO.Path.GetFileName(hpf.FileName)); 
      Response.Write("<b>File: </b>" + hpf.FileName + " <b>Size:</b> " + 
       hpf.ContentLength + " <b>Type:</b> " + hpf.ContentType + " Uploaded Successfully <br/>"); 
     } 
    } 

Można by umieścić ten kod w swoim poradniku w procedurze obsługi zdarzenia insertButton_Click - zasadniczo umieszczając tworzenie blob i przesyłanie do przechowywania blob wewnątrz wyżej blok kodu if(hpf.ContentLength>0).

Więc pseudo-kod może wyglądać następująco:

protected void insertButton_Click(object sender, EventArgs e) 
{ 
    HttpFileCollection hfc = Request.Files; 
    for (int i = 0; i < hfc.Count; i++) 
    { 
     HttpPostedFile hpf = hfc[i]; 

     // Make a unique blob name 
     string extension = System.IO.Path.GetExtension(hpf.FileName); 

     // Create the Blob and upload the file 
     var blob = _BlobContainer.GetBlobReference(Guid.NewGuid().ToString() + extension); 
     blob.UploadFromStream(hpf.InputStream); 

     // Set the metadata into the blob 
     blob.Metadata["FileName"] = fileNameBox.Text; 
     blob.Metadata["Submitter"] = submitterBox.Text; 
     blob.SetMetadata(); 

     // Set the properties 
     blob.Properties.ContentType = hpf.ContentType; 
     blob.SetProperties(); 
    } 
} 

Ponownie, jest to po prostu pseudo-code, więc jestem przy założeniu, że to w jaki sposób to działa. Nie testowałem składni, ale myślę, że jest blisko.

Mam nadzieję, że to pomoże. Powodzenia!

Powiązane problemy