0

これが私のUploadifyの次のコードで、AmazonS3に直接ファイルをアップロードします。

<html>
     <head>
          <link rel="stylesheet" href="uploadify.css" type="text/css" media="screen" />
          <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
          <script type="text/javascript" src="jquery.uploadify-3.1.min.js"></script>
          <script type="text/javascript">
             $(function() {
                    $('#file_upload').uploadify({
                        'requeueErrors' : true,
                        'fileDataName'  : 'file',
                        'method'        : 'post',
                        'formData'      : { 
                                            'key': 'uploads/${filename}', 
                                            'AWSAccessKeyId': 'xxxxxxxxxxxxxxxxxxx',    
                                            'bucket': 'mybucket', 
                                            'acl': 'authenticated-read', 
                                            'policy': 'xxxxxxxxxxxxxxxxx', 
                                            'signature': 'xxxxxxxxxxxxx', 
                                             'Content-Type': 'text' 
                                           },
                         'fileObjName'  : 'file',
                         'cancelImg'    : 'cancel.png',
                         'uploader'     : 'http://mybucket.s3.amazonaws.com',
                         'swf'          : 'uploadify.swf',
                         'auto'         : false,
                         'fileType'     : 'text',
                         'onUploadStart': function(file)
                                           {
                                                console.log('Attempting to upload: ' + file.name);
                                            },
                         'onUploadSuccess': function(file, data, response)
                                            {
                                                 alert('The file was saved to: ' + data);
                                            }
                       });
              });
          </script>
    </head>

    <body>
       <form>
           <p><input type="file" name="file_upload" id="file_upload" /></p>
           <p><a href="javascript:$('#file_upload').uploadify('upload')">Upload Files</a></p>
        </form>
    </body>
 </html>

ファイルをAmazonS3にアップロードしようとすると次のエラーが発生します。HTTPエラー(403) コードのどこに問題があるかを教えてください。

4

3 に答える 3

0

私は同じ問題を抱えていて、次の方法で解決しました。

  1. 私はubuntuを使用しているので、wiresharkを使用して、s3が返していたエラーxmlを見つけました。このエラーにより、何が問題なのかがわかります。
  2. エラーは、acl が既にポリシー ドキュメントに含まれているため、n formData であってはならないことを教えてくれました。あなたが同じかどうかを確認してください。
于 2013-03-12T09:08:03.327 に答える
0

編集:古いバージョンのuploadifyを使用しているようですが、現在の回答がどれほど正確かはわかりません。すぐに更新します

私は別の問題の助けを探していましたが、私は立ち止まってあなたを少し助けると思いました.

アップローダ パラメータに amazon の URL が設定されているようです。

'uploader'     : 'http://mybucket.s3.amazonaws.com',
'swf'          : 'uploadify.swf',

完全に機能する別のものがあります。他の例では、アップローダーがuploadify.swfにリンクし、スクリプトがアップロード先のパスにリンクしていることもわかります。

このような:

'uploader'  : '/resources/js/uploadify/uploadify.swf',
'script'    : '<?php echo $uploadPath; ?>',

アップロードパス変数は(私のコードでは):

$uploadPath = 'http://s3.amazonaws.com/' . $bucket;

これは私が持っているものと機能するものの完全な例です:

$('#file_mainfile').uploadify({
    'uploader'  : '<?php echo WPDEPOSIT_URL; ?>/resources/js/uploadify/uploadify.swf',
    'script'    : '<?php echo $uploadPath; ?>',
    'cancelImg' : '<?php echo WPDEPOSIT_URL; ?>/resources/images/cancel.png',
    'folder'    : '<?php echo $fileFolder; ?>',
    'auto'      : true,
    'fileExt'   : '*.zip',
    'buttonText': '<?php _e('Upload .zip', WPD_SHOPPER_NAME); ?>',
    'method'    : 'post',
    'fileDataName'  : 'file',
    'auto'          : 'true',
    'scriptData' : {
            "AWSAccessKeyId"                                : "<?php echo $amazonClass->AWS_ACCESS_KEY; ?>",
            "key"                       : "${filename}",
            "acl"                       : "public-read",
            "policy"                    : "<?php echo $policy; ?>",
            "signature"                 : "<?php echo $signature; ?>",
            "success_action_status"                         : "201",
            "key"                       : encodeURIComponent(encodeURIComponent("<?php echo $folder; ?>${filename}")),
            "fileext"                   : encodeURIComponent(encodeURIComponent("")),
            "Filename"                  : encodeURIComponent(encodeURIComponent(""))
    },
    'onError'     : function (event,ID,fileObj, response) {

    },
    'onComplete': function(event, ID, fileObj, response, data) {
            var filePath = $(response).find("location").text();
            displayMessage('success', 'file_mainfile', '<?php _e('Successfully uploaded to Amazon S3 server.', WPD_QA_NAME); ?>', filePath);
            window.wpds_thumbnail = filePath;

    }
});

すべてを別のフォルダーにアップロードするため、コードにフォルダー変数が表示されます。

于 2013-01-17T14:07:46.870 に答える
0

また、uploadify を使用して Amazon S3 にファイルをアップロードしています。私の戦略を実装してみてください。

まず、uploadify を使用してサーバーにファイルをアップロードしてから、Amazon S3 にアップロードします。アップロード後、アップロードしたファイルをサーバーから削除します。これは簡単な方法です。

于 2013-01-09T11:50:56.233 に答える