2012-11-26 63 views
1

我想將圖像上傳到s3。爲此,我正在關注http://railscasts.com/episodes/383-uploading-to-amazon-s3使用jQuery文件上傳到s3 rails應用時獲取403(禁止)

我可以將單張圖片上傳到s3,但現在我正在使用jquery文件上傳來上傳多個文件。

當我試圖上傳文件時,它給了我403(禁止)。

我需要做些什麼來解決它?

謝謝任何​​能夠提前幫助的人!

+0

https://github.com/pjambet/direct-upload - >從這個鏈接你可以直接上傳在S3它的小項目你可以克隆 –

回答

0

您需要檢查您的S3存儲桶的權限。它應該允許「上傳/刪除」。

此外,你應該建立CORS配置(CORS:跨來源資源共享) (你的水桶,去屬性==>權限,然後單擊「添加CORS配置」)

的文件應該是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>http://localhost:3000</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

在這裏,它允許我的本地主機發布文件到這個存儲桶。

0

當你測試你可以使用非常廣泛CORS配置

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>GET</AllowedMethod> 
     <MaxAgeSeconds>3000</MaxAgeSeconds> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 
0

除了CORS,403能來,因爲錯誤的contentType設置。

服務器端:

GeneratePresignedUrlRequest rq = new GeneratePresignedUrlRequest(bucketName, objectKey); 
rq.setContentType("video/*"); 
... 

客戶端:

$.ajax({ 
       url:upUrl, 
       type: "PUT", 
       data: file, 
       contentType:'video/*', 
       cache: false, 
       processData:false, 
       success: function (data) { 

       } 
       }); 
相關問題