由于我们似乎只限于桶的数量,我正在试图弄清楚如何完成以下操作:
-
我有一个iOS应用程序,用户可以上传 Profiles 图片 .
-
任何人都可以查看 Profiles 图片(我希望公开) .
-
理想情况下,我可以上传到一个桶(例如:myprofilepics.s3.amazonaws.com)
-
理想情况下,每个用户都可以上传到自己的子文件夹(例如:myprofilepics.s3.amazonaws.com/images/userXXX/
-
理想情况下,我上传图片,并直接从应用程序将其设置为公共访问权限,以便其他用户可以立即查看 Profiles 图片 .
我在文档中遗漏了什么吗?我感谢您对此问题的任何反馈 .
3 回答
为了解决这个问题,我在他们的iOS SDK中找到了亚马逊的示例代码,找到了here . 在SDK zip中,可以在
samples/S3_Uploader
找到感兴趣的示例项目 .要从该示例项目获取上传图像公开的项目,您只需在正确的位置添加一行:
其中
por
是用于上传图像的S3PutObjectRequest
.我的项目上传代码如下所示(看起来几乎与亚马逊的示例代码相同):
AWS_ACCESS_KEY_ID
和AWS_SECRET_KEY
当然是您的AWS凭据,而AWS_PICTURE_BUCKET
是您的图片存储桶 .如果您正在管理自己用户的身份(即不通过AIM),则还必须管理可以访问的资源 . 我会介入一个瘦Web服务来管理对S3上文件的访问 .
或者,您可以使用Temporary Security Credentials和安全策略为您的用户提供对S3的访问权限 . 您必须在设备上添加代码才能获得用户的临时令牌 .
我选择了第一个解决方案,因为它让亚马逊S3不受影响,你可以在后期自由选择另一个后端 .
这就是我最终做的事情: