2012-08-11 80 views
6

有人可以提供代码来将上传的文件保存为二进制格式的azure blob吗?我目前使用的文本保存在大文件上非常慢,读取/保存到blob,一行一行。将二进制文件从httppostedfile保存到blob

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 

由于

回答

7

此代码段是基于在生产应用程序,推照片转换成Blob存储。这种方法直接从HttpPostedFile获取流,并直接将其传递到客户端库以存储到Blob中。你应该根据你的应用程序改变几件事:

  • blobName可能需要适应。
  • ConnectionString中最多取斑客户应隔离成辅助类
  • 同样,你可能会希望在BLOB容器帮手根据你的业务逻辑
  • 您可能不希望容器是完全公开访问。这只是为了告诉你怎么做,如果你喜欢
// 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); 
相关问题