2012-01-06 18 views
1

私はAzure BlobストレージでWCF RESTサービスを持っています。ストリームでプロキシとしてサービスを使用したくないので、クライアントの要求を絶対URLにリダイレクトしたいのですが、ファイルにリダイレクトして直接オープンしようとします。私が望むのは、サーバーが要求を絶対的なblobのURLにリダイレクトするときにダウンロードプロセスを開始することだけです。私が試したコードは以下の通りです:Azure BlobストレージでWCF RESTからファイルをダウンロード

var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy 
    { 
     Permissions = SharedAccessPermissions.Read, 
     SharedAccessStartTime = DateTime.UtcNow, 
     SharedAccessExpiryTime = DateTime.UtcNow + TimeSpan.FromMinutes(1) 
    }); 
    WebOperationContext.Current.OutgoingResponse.ContentType = blob.Properties.ContentType; 
    WebOperationContext.Current.OutgoingResponse.ContentLength = blob.Properties.Length; 
    WebOperationContext.Current.OutgoingResponse.Location = blob.Uri.AbsoluteUri+sas; 
    WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect; 

P.S.ステータスコードをリダイレクト、ムーブドなどに変更しようとしましたが、何も変わりません。

更新 Iは、アプリケーション/オクテットストリームにContentTypeをを変更すると、それはIEでこのような結果:

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> 
... 
</base64Binary> 

答えて

1

this questionの可能性のある重複。

Azure Lbobの "content-disposition"ヘッダーを制御する方法がないStive Marx saisのため、フォースブラウザ(IE)がファイルをダウンロードする方法はありません。 content-typeを "application/octet-stream"に設定すると、いくつかのブラウザがファイルを開くのではなく強制的にダウンロードさせることがありますが、IEではうまくいきません。

+0

はい、FirefoxとChromeで動作しますが、正しく動作しません。ブラウザは、ファイルと拡張子の実際の名前が何であるかを知らない。 azureから大きなファイルをダウンロードする最も良い方法は何ですか?ストリームは正しい方法ですか?ストリームを作成するために、サーバーはクライアントにデータを送信する前にデータをダウンロードする必要があります。 – iboware

+0

画像がない場合、私は通常ファイルを圧縮します。 ZIP拡張子とアプリケーション/ x-zip圧縮されたコンテンツタイプでは、ファイルは通常インラインで表示されます。 – astaykov

+0

お返事ありがとうございます。別の返信を少し待っていますが、これを最も適切な方法で実行するためのベストプラクティスを検索し、回答を承認済みとしてマークします。 – iboware

関連する問題