作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 aws-sdk-php 创建预签名 URL,用于将文件上传到 S3 存储桶。 GET 的 URL 正在运行。
这是代码
$client = S3Client::factory(array('region' => 'eu-west-1','key' => 'xxx','secret' => 'xxx',));
//option 1
$command = $client->getCommand('PutObject', array(
'Bucket' => 'myBucket',
'Key' => 'testing/signedPHP1_'.time(),
'ContentType' => 'image/jpeg',
'Body' => 'dump' //it's mandatory
));
$signedUrl = $command->createPresignedUrl('+5 minutes');
$signedUrl .= '&Content-Type=image%2Fjpeg';
echo("\n\nThe URL is: ". $signedUrl . "\n");
echo("Now run from console for upload:\ncurl -v -H \"Content-Type: image/jpeg\" -T /tmp/temp.jpg '" . $signedUrl . "'");
//option 2
$request = $client->put('myBucket/testing/signedPHP2_'.time());
$signedUrl = $client->createPresignedUrl($request, '+5 minutes');
$signedUrl .= '&Content-Type=image%2Fjpeg';
echo("\n\nThe URL is: ". $signedUrl . "\n");
echo("Now run from console for upload:\ncurl -v -H \"Content-Type: image/jpeg\" -T /tmp/temp.jpg '" . $signedUrl . "'");
//GET which works
$request = $client->get('myBucket/testing/existingFile.txt');
$signedUrl = $client->createPresignedUrl($request, '+5 minutes');
echo("\n\nThe URL is: ". $signedUrl . "\n");
echo("Now run:\ncurl '" . $signedUrl . "'");
//GET which works
$command = $client->getCommand('GetObject', array('Bucket' => 'myBucket','Key' => 'upload/data.txt'));
$signedUrl = $command->createPresignedUrl('+5 minutes');
echo("\n\nThe URL is: ". $signedUrl . "\n");
echo("Now run:\ncurl '" . $signedUrl . "'");
尝试使用 curl 命令时出现错误SignatureDoesNotMatch 与消息我们计算的请求签名与您提供的签名不匹配。检查您的 key 和签名方法。
用于 Javascript 的 aws-sdk 中的类似代码正在运行
var AWS = require('aws-sdk');
AWS.config.update({ accessKeyId: 'xxx', secretAccessKey: 'xxx', region: 'eu-west-1' });
var s3 = new AWS.S3();
var params = {
Bucket: 'myBucket',
Key: 'testing/preSignedURLnodeJS_' + (+new Date),
ContentType: 'image/jpeg',
Expires: 60 * 5
};
s3.getSignedUrl('putObject', params, function(err, url) {
console.log('The URL is: ', url);
console.log('Now run from console for upload:\n\ncurl -v -H "Content-Type: image/jpeg" -T /tmp/temp.jpg \'' + url + '\'');
});
已经做了很多研究,但没有结果。我究竟做错了什么?
最佳答案
在 Github 上,我从 SDK 开发人员那里得到了一个答案,上面写着
$command = $client->getCommand('PutObject', array(
'Bucket' => 'myBucket',
'Key' => 'testing/signedPHP1_'.time(),
'ContentType' => 'image/jpeg',
'Body' => '',
'ContentMD5' => false
));
关于php - 带有 AWS presignedURL 的 PUT 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833882/
我正在使用 HttpVerb 生成预签名 URL 作为 PUT 以将文件上传到我的存储桶。奇怪的是,当我使用 AWSSDK 使用预置 URL 上传文件时,它工作正常。但是,当我在表单操作方法中使用此
我正在使用 aws-sdk-php 创建预签名 URL,用于将文件上传到 S3 存储桶。 GET 的 URL 正在运行。 这是代码 $client = S3Client::factory(array(
我正在尝试从预签名的 url 将图像上传到 S3 存储桶,它给出了 ssl 异常错误连接被对等方关闭 这是我的代码 public int upload(String filePath, URL url
我是一名优秀的程序员,十分优秀!