2015-01-26 54 views
0

將任何文件發送到帶有良好上傳器的s3時,我想覆蓋Content-Type爲「application/octet-stream」。將FineUploader直接用於S3存儲桶時覆蓋內容類型

我上傳的視頻文件,並在檢索它們時,我從來不希望它們通過瀏覽器打開我總是希望下載。

我試着在簽名簽名中覆蓋它,但是上傳失敗了簽名測試。我可以得到罰款上傳者告訴s3它將其保存爲「應用程序/八位字節流」?

或者在使用AWS開發工具包生成預先簽名的url以告訴其始終以「application/octet-stream」形式發送時,是否有辦法?我認爲這可能會這樣做,但至少它試圖在瀏覽器中播放視頻。

var headerOverrides = new ResponseHeaderOverrides { ContentType = "application/octet-stream" }; 

var urlRequest = new GetPreSignedUrlRequest 
{ 
     BucketName = _bucketName, 
     Key = key, 
     Expires = DateTime.Now.AddMinutes(120), 
     ResponseHeaderOverrides = headerOverrides, 
     Protocol = Protocol.HTTPS, 
     Verb = HttpVerb.GET 
}; 

回答

2

將標頭設置爲某個通用值不是解決問題的正確方法。相反,您需要設置適當的Content-Disposition標題。目前,您需要使用S3 API as part of handling Fine Uploader's upload success call通過服務器對您的對象進行此項調整。有an open case to allow these types of headers to be associated with each object client-side

+0

非常好,而不是改變上傳成功的Content-Disposition,我剛剛在創建PreSignedUrlRequest時就改變了它,就像這樣..'var headerOverrides = new ResponseHeaderOverrides {ContentType =「application/octet-stream」,ContentDisposition = string.Format (「application/octet-stream; filename = {0}」,fileName)};' – NoseBagUK 2015-01-27 17:19:27

+0

@NoseBagUK我很肯定你想用「attachment」而不是「application/octet-stream」。 – 2015-01-27 17:25:34

+0

當你說「你需要通過服務器對你的對象進行調整」時,你的意思是複製對象並補充你想要的標題?我需要以某種方式在我的對象上設置「緩存控制」。另外,你預計什麼時候發佈5.5.0? – Vidya 2016-01-08 17:34:33