2017-06-21 5 views
0

イメージファイル(JPG)をAzureブロブストレージにアップロードしようとしています。私は次のコードを使用していますAzureブロブがASP.Netフォームから作成されていない

var credentials = new StorageCredentials(name, key); 
CloudStorageAccount cso = new CloudStorageAccount(credentials, true); 
CloudBlobClient blobClient = cso.CreateCloudBlobClient(); 
CloudBlobContainer container = blobClient.GetContainerReference("containerName"); 
string photoName = e_name + e_cr; 
CloudBlockBlob blob = container.GetBlockBlobReference(photoName); 
blob.Properties.ContentType = "image/jpg"; 
blob.UploadFromStreamAsync(img.OpenReadStream()); 

私の問題は、コードが実際に私のコンテナにブロブを作成していないということです。私はそれを何回も(昨夜と今日は約3〜4回)走り、昨夜の試みは成功しましたが、もはや機能しません。コンテナのBlobとContainerの両方のアクセスタイプを試したので、そうは思いません。 IMGはIFormFileで、名前、キー、photoName、e_name、およびe_crは、すべての文字列です

答えて

0

あなたが非同期的に

blob.UploadFromStreamAsync(img.OpenReadStream()); 

しかしブロブを作成しようとしているという可能性が作成されていないBLOBの一つの可能​​性のある理由この非同期操作が完了するのを待っているわけではありません。上記のコード行を次のように変更してください:

await blob.UploadFromStreamAsync(img.OpenReadStream()); 

これは違いがあります。このコードを呼び出すメソッド(私はそれがコントローラのアクションであると仮定しています)も、asyncとして宣言する必要があることに注意してください。

0

小文字に含まれている必要がありますあなたのコードに基づいて、ここに

  • を集中するためにいくつかのことは名前として「containername」にコンテナ名を更新します。
  • 次の行は、#4行目以降に追加します。これは、格納域名がすでにストレージに作成されている場合には必要ありません。

    await extractcontainer.CreateIfNotExistsAsync();

  • コンテナとブロブの名前制限を確認してhereを確認し、photoNameの値が制限を満たしていることを確認してください。

  • 上記のGaurav Mantriによって提案された変更を行います。

関連する問題