6

ユーザーがAzureBlobStorageに保存されている写真をアップロードできるようにするアプリケーションがあります。ユーザーはこれらの写真を表示することもできます。それらを表示するには、アプリケーションで画像をデフォルトのダウンロード場所にダウンロードする必要があります。現時点では、アップロードは完全に機能します。しかし、Azure APIで見つけたダウンロード機能は、何もしていないようです。また、この機能はデスクトップ/ラップトップだけでなく、デフォルトのディレクトリが異なるモバイルデバイスでも機能する必要があるため、ダウンロード場所を実際に指定することはできません。

これは単純なはずですが、私を助けるものは何も見つかりません。

これが私のコードのサンプルです:

CloudBlobContainer container = blobClient.GetContainerReference("photos");
CloudBlob blob = container.GetBlobReference(photo.BlobUrl);
//copy blob from cloud to local gallery
blob.DownloadToFile(photo.ImageName);

blob.DownloadToFile(photo.ImageName);原因はサーバー要求を引き起こしますが、何も起こりません。つまり、ファイルがダウンロードされません。

4

3 に答える 3

6

クライアントにblobストレージから直接ファイルをダウンロードさせ、組み込みのブラウザー機能を使用してファイルを保存させることができない理由は何ですか?ファイルがプライベートの場合、SAS署名を生成するのは非常に簡単です。これにより、ダウンロードがサーバーを経由するのをオフロードし、そのオーバーヘッドを取り除きます。

于 2012-10-24T22:52:34.647 に答える
4

ここ:

blob.DownloadToFile(photo.ImageName);

ファイルを保存する場所とファイルの名前を指定する必要があります。

blob.DownloadToFile("C:\mycutepuppy.jpg");

System.Environment.SpecialFolder列挙型を使用して、現在のシステムに基づいてフォルダーを特定し、イメージ名を追加することができます。

より完全な例を次に示します。

var imgPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), + photo.ImageName);

blob.DownloadToFile(imgPath);

これにより、ユーザーのデスクトップディレクトリがある正しいパスに画像が保存されます。これは、特別なフォルダの列挙型に関するドキュメントです。

http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

于 2012-10-24T18:31:14.743 に答える
3

このコードから何を期待しているのだろうかと思いますが、特に異なるプラットフォームの場合、これは機能しません。代わりにDownloadToStreamメソッドを使用することをお勧めします。次に、ストリームをどうするかを決めることができます。たとえば、ファイルをどこに保存するかをユーザーに尋ねます。

于 2012-10-24T16:15:00.573 に答える