通过CloudFront将内容上传到S3

时间:2013-03-21 22:11:47

标签: ios objective-c amazon-s3 amazon-cloudfront

我正在开发一款需要将图片上传到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中的原始存储桶。有可能吗?如果是的话,我怎么能这样做?

非常感谢,

维克多

2 个答案:

答案 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);