2011-06-22 12 views
0

私はLitS3 libraryを使って、自分のASP.NET MVCアプリケーションからAmazon S3に写真をアップロードしています。LitS3ライブラリでキャッシュ制御ヘッダーを指定する方法は? (Amazon File Upload)

私はすべてのドキュメントを読んで、グーグルで調べました。写真をアップロードするときに、cache-controlヘッダーを設定する方法がわかりません。

私はあなたがREST APIでそれを行うことができると知っていますが、LitS3ライブラリを使用しているので、これはオプションではありません(ライブラリを完全にスクラップしない限り)。

これを行う方法を知りましたか?

APIのほぼ100%にアクセスしているようですが、自分の状況にどうやって適用できるかはわかりません。ここで

は、私は現在、アップロードしてる方法は次のとおりです。inputStreamは、私は私のMVCアクションでHttpPostedFileBase.InputStreamから取得すること、Streamある

var s3 = new S3Service { AccessKeyID = _accessKey, SecretAccessKey = _secret }; 
s3.AddObject(inputStream, 
      _bucketName, 
      fileName, 
      contentType, 
      CannedAcl.PublicRead); 

オーバーロードは、他のヘッダーをcontent-typeと区別することをサポートしていません。だから私はもっと深く掘り下げ、より低いレベルの方法を使う必要があるように見えるが、私が言ったように、ちょうど方法を見つけることができない。

誰でも手助けできますか?

答えて

2

ありがとうございました! this threadのおかげで、キャッシュ制御には関係しませんが、AddObjectRequestと指定してStreamを使用する方法が示されています。誰にも興味を持っている場合はここ

は、作業コードです:

// Create S3 service. 
var s3 = new S3Service { AccessKeyID = _accessKey, SecretAccessKey = _secret }; 

// Create HTTP Request. 
var request = new AddObjectRequest(s3, _bucketName, fileName) 
{ 
    CacheControl = "max-age=864000", 
    CannedAcl = CannedAcl.PublicRead, 
    ContentType = contentType, 
    ContentLength = inputStream.Length 
}; 

// Upload photo. 
using (var outStream = request.GetRequestStream()) 
{ 
    var buffer = new byte[inputStream.Length > 65536 ? 65536 : inputStream.Length]; 
    var position = 0; 
    while (position < inputStream.Length) 
    { 
     var read = inputStream.Read(buffer, 0, buffer.Length); 
     outStream.Write(buffer, 0, read); 
     position += read; 
    } 
    outStream.Flush(); 
} 

var response = request.GetResponse(); 
response.Close(); 
関連する問題