2012-08-11 10 views
6

Czy ktoś może podać kod do zapisania przesłanego pliku do partykuły BLOBa w formacie binarnym? Obecnie używam zapisywania tekstu, który jest niesamowicie wolny w przypadku dużych plików, odczytywanie/zapisywanie do bloba, linia po linii.Zapisz plik binarny do pliku blob z pliku httppostedfilmu

Private Function ReadFile(ByVal file As HttpPostedFile) As String 
     Dim result As String = "" 
     Dim objReader As New System.IO.StreamReader(file.InputStream) 
     Do While objReader.Peek() <> -1 
      result = result & objReader.ReadLine() & vbNewLine 
     Loop 
     Return result 
    End Function 

Dzięki

Odpowiedz

7

Kod ten fragment jest oparty na aplikacji produkcyjnej, która popycha do przechowywania zdjęć blob. Podejście to pobiera strumień bezpośrednio z pliku HttpPostedFile i przekazuje go bezpośrednio do biblioteki klienta w celu zapisania w obiekcie typu blob. Powinieneś zmienić kilka rzeczy w zależności od aplikacji:

  • Nazwa blobName prawdopodobnie będzie wymagać dostosowania.
  • ConnectionString do pobierania klienta blob powinny być izolowane w klasach pomocniczych
  • Podobnie będzie prawdopodobnie chcą pomocnika do pojemnika blob opiera się na logice biznesowej
  • Możesz nie chcieć pojemnik być w pełni dostępne publicznie . To zostało właśnie dodane, aby pokazać, jak to zrobić, jeśli chcesz
// assuming HttpPostedFile is in a variable called postedFile 
var contentType = postedFile.ContentType; 
var streamContents = postedFile.InputStream; 
var blobName = postedFile.FileName 

var connectionString = CloudConfigurationManager.GetSetting("YOURSTORAGEACCOUNT_CONNECTIONSTRING"); 
var storageAccount = CloudStorageAccount.Parse(connectionString); 
var blobClient = storageAccount.CreateCloudBlobClient(); 

var container = blobClient.GetContainerReference("YOURCONTAINERNAME"); 
container.CreateIfNotExist(); 
container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); 

var blob = container.GetBlobReference(blobName); 
blob.Properties.ContentType = contentType; 
blob.UploadFromStream(streamContents);