我正在开发一款需要将图片上传到S3的应用。现在我这样做:
S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:nameOfThePicture inBucket:nameOfTheBucket];
por.contentType = @"image/jpg";
por.data = imageData;
// Put the image data into the specified s3 bucket and object.
S3PutObjectResponse *putObjectResponse = [self.s3 putObject:por];
por.delegate = self;
将图像直接上传到S3太慢了,我已经配置了CloudFront服务。 现在,我想通过CloudFront将图像上传到S3中的原始存储桶。有可能吗?如果是的话,我怎么能这样做?
非常感谢,
维克多
答案 0 :(得分:5)
没有。 CloudFront是一种单向事件 - 您可以通过CloudFront从S3检索对象,但无法通过CloudFront将对象上载到S3。
答案 1 :(得分:0)
我的项目有同样的要求。虽然我自己无法理解一切,但我遇到了一个链接。
http://raamdev.com/2008/using-curl-to-upload-files-via-post-to-amazon-s3/
我试图用PHP curl模仿相同的东西,但不知怎的,我看到密钥是上传的,而不是图像文件。可能这段代码会为你提供指针,如果有人能够在下面的脚本中找出问题,对我和任何想要实现这一目标的人都会有很大的帮助。
$url = 'http://xxxxxxxxxxx.cloudfront.net/'; // cloudfront distribution url.
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("key"=>$_REQUEST['key'],"file"=>$_FILES['file']['tmp_name']));
//curl_setopt($ch, CURLOPT_POSTFIELDS, array("key"=>$_FILES['file']['tmp_name']));
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if (false == $result) {
echo "Error while loading page: ", curl_error($ch), "\n";
}
curl_close($ch);
var_dump($result);