当用户上传图片时,我正在动态调整图片大小。原始图片存储在Amazon S3的一个名为djangobucket的bucket中。在这个桶里,有上千个文件夹。
每个文件夹都以用户命名。我不必担心创建bucket或文件夹,因为所有这些都是从客户端处理的。
这是一张图表:
djangobucket ------------> bob ---------> picture1.jpg
picture2.jpg
picture3.jpg
picture4.jpg
如你所见,鲍勃有许多照片。一旦用户上传图片到S3,我就通过Django通过URL下载它,在本例中是:http://s3.amazonaws.com/djangobucket/bob/picture1.jpg
我下载图像并执行图像处理,并将处理后的图像保存在我的django应用服务器上。
我想把这个经过处理的图像发送回bob的文件夹中,这样就可以在http://s3.amazonaws.com/djangobucket/bob/picture1_processed.jpg公开访问它
客户机已经可以访问amazon密钥和密钥,以便他/她可以将图片上载到此存储桶。服务上的所有用户使用相同的密钥。我也会用同样的钥匙。
我听说过一个叫Boto的东西,但是它涉及到Bucket的创建,我不确定如何只做上传部分。我只关心把图片上传到合适的用户文件夹。
我已经研究了几个小时,所以我求助于这里的专家。
这是我的代码,这样你就能更好地理解我在做什么。
user = 'bob'
url = 'http://s3.amazonaws.com/djangobucket/bob/picture1.jpg'
filename = url.split('/')[-1].split('.')[0]
download_photo = urllib.urlretrieve(url, "/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (filename))
downloaded_photo = Image.open("/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (filename))
resized_photo = downloaded_photo.resize((300, 300), Image.ANTIALIAS)
new_filename = filename + "_processed"
resized_photo.save("/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (new_filename))
我想发送保存在/home/ubuntu/Desktop/resized_Images中的调整大小的照片/ 在Amazon S3上的djangobucket中找到Bob的文件夹并使其公开可见。
谢谢你的帮助。
编辑 我找到了这个链接:http://www.laurentluce.com/posts/upload-and-download-files-tofrom-amazon-s3-using-pythondjango/
不太适合我的情况,但我认为我走在正确的轨道上。
boto
是最好的方法。可以使用以下方法获取现有的bucket:
安装boto之后,此代码应该执行您需要执行的操作
这里有一些指向Boto API和Boto S3 Doc的链接
相关问题 更多 >
编程相关推荐