4

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

真的感谢,

胜利者

4

2 回答 2

5

不可以。CloudFront 是一种单向事务——您可以通过 CloudFront 从 S3 检索对象,但不能通过 CloudFront 将对象上传到 S3。

于 2013-03-21T22:37:28.480 回答
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);
于 2013-12-20T10:15:30.540 回答