2014-02-01 2 views
0

Я пытаюсь загрузить файл на S3. Я проверить все, пару раз, и все выглядит правильно для меня, но всякий раз, когда я пытаюсь загрузить файл, появляется сообщение об ошибке, говоря
responseText = InvalidArgument
POST requires exactly one file upload per request.
0
file
3670E4EE52B3BCD5
b3rOF/9WJHymo1ZENIOlrct/ZusAJ50AnSIP0df3K3+DdEcAFolJDx8qU6DH2N1l
S3 Upload Issue

Может кто-то пожалуйста, помогите мне Findout то, что я делаете неправильно здесь?

<div id="s3-fileuploader" class="dropArea"></div> 

    <script type="text/javascript"> 

     j$ = jQuery.noConflict(); 

     //block and unblock UIbased on endpoint url 
     function setUI(){ 
      j$('div.dropArea').unblock(); 
     } 

     $(document).ready(function() { 

      $('#s3-fileuploader').fineUploader({ 

       request: { 
        endpoint: "https://{!bucketname}.s3.amazonaws.com", 
        accessKey: "{!key}" 
       }, 
       signature: { 

        //always included 
        "expiration": "{!expireStr}", 

        signature : "{!signedPolicy}", 
        policy: "{!policy}", 

        "conditions": 
        [ 
         //always included 
         {"acl": "public-read"}, 

         //always included 
         {"bucket": "{!bucketname}"}, 

         //not included in IE9 and older or Android 2.3.x and older 
         {"Content-Type": "{!ContentType}"}, 

         //always included 
         {"key": "{!key}"}, 

         //always included 
         {"x-amz-meta-qqfilename": "{!URLENCODE('test.jpg')}"}, 
        ] 
       }, 
       cors: { 
        expected: true, //all requests are expected to be cross-domain requests 
        sendCredentials: false, //if you want cookies to be sent along with the request 
        allowXdr: true 
       }, 

       autoUpload: true, 
       multiple:false, 
       debug: true, 

       text: { 
        uploadButton: '<i class="icon-plus icon-white">Select Files</i> ' 
       },  
       uploadSuccess: { 
        endpoint: "{!redirectURL}" 
       } 
      }).on('submit',function(event,id,name){ 

       //set endpoint 
       console.log('https://{!bucketname}.s3.amazonaws.com'); 
       $(this).fineUploader('setEndpoint','https://{!bucketname}.s3.amazonaws.com'); 

      }); 
      setUI(); 
     }); 

    </script> 
</body> 

ответ

0

Опция подписи должна содержать информацию о вашем сервере подписи. Вместо этого вы, очевидно, прикрепляете (недействительный) документ политики к этому варианту. Кроме того, вы не создаете полицейский документ, Fine Uploader создает его для вас и передает его на ваш сервер подписи для подписания.

Также вы должны использовать плагин fineUploaderS3 jquery для этого.

Похоже, вы не прочитали документацию, описывающую, как работает Fine Uploader S3. Предлагаю начать с руководств на домашней странице http://docs.fineuploader.com.

+0

Спасибо за ваш ответ. Когда я делаю то же самое с собственной HTML-формой, все отлично работает и файл загружается на S3 отлично. Поэтому я уверен в точности параметров. Я пытаюсь это с Salesforce. Когда я делаю это с fineUploader, я получаю ошибку. Поддерживает ли fineUploader Salesforce? –

+0

Я видел консоль, и она говорит: ------ WebKitFormBoundarySeVUAfRfUe5pSOey Content-Disposition: form-data; name = "qquuid" c063f3b6-101e-4421-be23-2ceca7db051a ------ WebKitFormBoundarySeVUAfRfUe5pSOey Content-Disposition: form-data; name = "qqtotalfilesize" ------ WebKitFormBoundarySeVUAfRfUe5pSOey Content-Disposition: form-data; Name = "qqfile"; имя файла = "11112.jpg" Content-Type: изображение/JPEG ------ WebKitFormBoundarySeVUAfRfUe5pSOey-- –

+0

Опять же, вам нужно будет начать с чтения документации Fine Uploader S3. С вашим кодом возникает ряд проблем. Если вы хотите загрузить напрямую в S3 Fine Uploader S3, вы можете сделать это для вас, но вы не настраиваете его правильно вообще и, похоже, не знаете, как это работает. После прочтения документации и просмотра некоторых примеров кода вы должны быть на правильном пути. –