2016-12-12 10 views
0

をアップロードする前に、私は、Azureのブロブにアップロードする次のコードを使用しますが、このエラーを取得する前WebImageヘルパーを使用して画像のサイズを変更しようとしています:サイズ変更画像Azureのブロブストレージに

cannot convert from 'system.web.helpers.webimage' to 'system.io.stream' 

次のようにコードがあります:

public async Task<string> UploadPropertyImageAsync(HttpPostedFileBase imageToUpload) 
    { 
     string imageFullPath = null; 
     if (imageToUpload == null || imageToUpload.ContentLength == 0 || imageToUpload.ContentLength >= 8388608) 
     { 
      return null; 
     } 
     //Image img = System.Drawing.Image.FromStream(imageToUpload); 
     WebImage img = new WebImage(imageToUpload.InputStream); 
     if (img.Width > 1000) 
      img.Resize(1000, 1000); 
     try 
     { 
      CloudStorageAccount cloudStorageAccount = ConnectionString.GetConnectionString(); 
      CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); 
      CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("property"); 

      if (await cloudBlobContainer.CreateIfNotExistsAsync()) 
      { 
       await cloudBlobContainer.SetPermissionsAsync(
        new BlobContainerPermissions 
        { 
         PublicAccess = BlobContainerPublicAccessType.Blob 
        } 
        ); 
      } 
      string imageName = Guid.NewGuid().ToString() + "-" + Path.GetExtension(img.FileName); 

      CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(imageName); 
      cloudBlockBlob.Properties.ContentType = img.ContentType; 
      await cloudBlockBlob.UploadFromStreamAsync(img); 

どこが間違っているのですか?

答えて

2

CloudBlockBlob.UploadFromStreamAsyncあなたのWebImageオブジェクトではないストリームを期待しているので、あなたはt彼の誤り。

イメージをストリームに変換する必要があります。私はドキュメンテーションを見て、そうする直接的な方法はありません。

WebImage.GetBytesを使用してWebImageからバイトを取得してから、CloudBlockBlob.UploadFromByeArrayAsyncメソッドを使用して、バイト配列をAzureストレージにブロブとしてアップロードできます。

1

例外はかなり自明です。

この行は、WebImage変数ではなく、Streamが必要です。

await cloudBlockBlob.UploadFromStreamAsync(img); 

例えば、アズールにファイルをアップロードする方法を示す例の多くがあります。

Uploading to Azure

...とここに...

An Introduction to Windows Azure BLOB Storage

+0

ありがとうマイク。私はblobにファイルを取得することができましたが、アップロードする前に高さと幅を取得する必要があります(サイズ変更を最初に実行することもあります)。なぜwebimageを導入したのですか?私はストリームのサイズを変更できないと仮定しています。最初にblobに保存してからサイズを変更するオプションを選んでください。 – Gavin5511

関連する問題