0

这是我的Uploadify的以下代码,用于将文件直接上传到Amazon S3

<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>

当我尝试将文件上传到Amazon S3时,出现以下错误:HTTP 错误 (403) 请帮助解决代码中的问题。

4

3 回答 3

0

我有同样的问题并使用以下方法解决。

  1. 我正在使用ubuntu,所以使用wireshark我发现了s3返回的错误xml。这个错误让我们知道出了什么问题。
  2. 错误告诉我 acl 已经在策略文档中,所以它不应该是 n formData。检查你是否有相同的。
于 2013-03-12T09:08:03.327 回答
0

我也在使用uploadify在Amazon S3上上传文件,我建议你尝试实施我的策略

首先,我使用uploadify在我的服务器上上传文件,然后将它们上传到Amazon S3,上传后我从我的服务器中删除上传的文件,这是一种简单的方法

于 2013-01-09T11:50:56.233 回答
0

编辑:看起来我正在使用旧版本的uploadify,不确定我现在的答案有多准确。很快就会更新

我正在为另一个问题寻求帮助,但我想我停下来帮助你一点。

我看到你在上传器参数中设置了亚马逊网址:

'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 回答