【问题标题】:Uploadify giving HTTP Error (403) while saving files direct to Amazon S3Uploadify 在将文件直接保存到 Amazon S3 时给出 HTTP 错误 (403)
【发布时间】:2012-12-29 14:51:03
【问题描述】:

这是我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) 请帮忙看看代码哪里出了问题。

【问题讨论】:

    标签: file-upload amazon-s3 uploadify http-status-code-403


    【解决方案1】:

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

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

    【讨论】:

    • 感谢赛义德的提示。不知何故,您提到的那件事不是我的要求(我的要求是直接上传到 S3)。
    【解决方案2】:

    编辑:看起来我使用的是旧版本的 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;
    
        }
    });
    

    我将所有内容上传到一个单独的文件夹中,这就是您在代码中看到文件夹变量的原因。

    【讨论】:

    • 感谢您的回复。希望它会起作用,不知何故我正在使用 ColdFusion 而不是 PHP,不知何故我也熟悉 PHP。目前我正在执行其他重要的开发任务。我会尽快尝试你的例子,让你知道结果会怎样。 :)
    • 是的,script 将文件上传到 S3 是绝对正确的,但我认为旧版本的 Uploadify 支持,请查看 uploadify 的文档,您找不到script 更多选项:uploadify documentation。如果您有时间可以这样做,请将uploadify 的版本发送给我以供下载(正是您正在使用的版本)。愿它有所帮助。再次感谢,感谢您的帮助。
    【解决方案3】:

    我遇到了同样的问题,用下面的方法解决了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多