簡體   English   中英

使用 PlUpload 和 Expiring Amazon S3 Link 將文件上傳到 Amazon

[英]Upload files to Amazon using PlUpload and Expiring Amazon S3 Link

我使用示例代碼將 plupload 直接工作到 Amazon S3。我使用臨時憑證獲得了Direct Browser to S3 Upload

現在我需要生成過期的 Amazon 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;
?>

但我收到此錯誤

輸入錯誤。 錯誤 #2032

我的參考鏈接是

我的代碼有什么錯誤?

檢查您的政策,也許它沒有正確設置並且您正在發送“額外輸入”。 嘗試使用瀏覽器的控制台並切換到網絡面板 - 找到向亞馬遜發出的 http 請求並檢查響應,它會顯示錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM