2013-01-02 47 views
1

我得到的plupload直接工作到亚马逊S3 this示例代码。我得到Direct Browser to S3 Upload使用临时凭证。使用PlUpload和过期将文件上传到亚马逊Amazon S3链接

现在我需要生成到期亚马逊S3链接和使用这些临时证书需要实现Plupload。即我需要混合上面提到的两种情况。所以我生成的URL并将其作为URL在下面的代码。

<script type="text/javascript"> 
$(function() { 
$("#uploader").plupload({ 
    runtimes : 'flash,silverlight', 
    url : 'TEMPORARY URL', 
    max_file_size : '10mb', 

    multipart: true, 
    multipart_params: { 
     'key': '${filename}', 
     'Filename': '${filename}', 
     'acl': 'public-read', 
     'Content-Type': 'image/jpeg', 
     'success_action_status': '201' 
    }, 
    file_data_name: 'file', 
    multiple_queues: true, 
    filters : [ 
     {title : "JPEG files", extensions : "jpg"} 
    ], 
    flash_swf_url : '../../js/plupload.flash.swf', 
    silverlight_xap_url : '../../js/plupload.silverlight.xap' 
}); 
}); 
</script> 

到期了产生Amazon S3的链接

<?php 
$S3_KEY='S3 Key Here'; 
$S3_SECRET='S3 Secret Here'; 
$S3_BUCKET='/uploadtestbucket'; 

$EXPIRE_TIME=(60 * 5); // 5 minutes 
$S3_URL='http://s3.amazonaws.com'; 

$objectName='/' . $_GET['name']; 

$mimeType=$_GET['type']; 
$expires = time() + $EXPIRE_TIME; 
$amzHeaders= "x-amz-acl:public-read"; 
$stringToSign = "PUT\n\n$mimeType\n$expires\n$amzHeaders\n$S3_BUCKET$objectName"; 
$sig = urlencode(base64_encode(hash_hmac('sha1', $stringToSign, $S3_SECRET, true))); 

$url = urlencode("$S3_URL$S3_BUCKET$objectName? AWSAccessKeyId=$S3_KEY&Expires=$expires&Signature=$sig"); 

echo $url; 
?> 

但我收到此错误

IO错误。 错误#2032

我引用链接

什么是我的代码中的错误?

回答

1

检查您的保单,也许它没有正确设置,并且您正在发送“额外输入”。尝试使用浏览器的控制台并切换到网络面板 - 找到对亚马逊的http请求并检查响应,它会告诉你错误。