2012-08-11 22 views
6

¿Alguien puede proporcionar código para guardar un archivo cargado en blob azul en binario? Actualmente uso un texto guardado que es increíblemente lento en archivos enormes, leyendo/guardando en blob, línea por línea.Guardar archivo binario en blob de httppostedfile

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 

Gracias

Respuesta

7

Este fragmento de código se basa en una aplicación de producción que empuja fotos en el almacén de blob. Este enfoque extrae la secuencia directamente desde HttpPostedFile y la entrega directamente a la biblioteca del cliente para almacenarla en un blob. Debería variar algunas cosas en función de su aplicación:

  • blobName probablemente necesite una adaptación.
  • El connectionstring hasta ir a buscar el cliente burbuja deben ser aislados en clases de ayuda
  • Del mismo modo es probable que desee un ayudante para el envase burbuja basada en la lógica de negocio
  • puede que no desee que el contenedor sea totalmente accesible al público . Eso fue agregado para mostrarle cómo hacer eso si le gusta
// 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); 
Cuestiones relacionadas