noa*_*ale 5 python django amazon-s3 boto
我正在用户上传图片时动态调整图像大小.原始图片存储在名为djangobucket的存储桶中的Amazon S3上.在这个桶里面,包含数千个文件夹.
每个文件夹都以用户命名.我不必担心存储桶创建或文件夹创建,因为所有这些都是从客户端处理的.
这是一个图表:
djangobucket ------------> bob ---------> picture1.jpg
picture2.jpg
picture3.jpg
picture4.jpg
Run Code Online (Sandbox Code Playgroud)
如你所见,鲍勃有很多照片.一旦用户将图片上传到S3,我就通过URL通过Django下载,在这种情况下,它将是:http://s3.amazonaws.com/djangobucket/bob/picture1.jpg
我下载图像并执行图像处理并将处理后的图像保存在我的django应用服务器上.
我想将此处理后的图像发回bob的文件夹,以便可以在http://s3.amazonaws.com/djangobucket/bob/picture1_processed.jpg上公开访问.
客户端已经可以访问亚马逊密钥和密钥,以便他或她可以将图片上传到此存储桶.该服务上的所有用户都使用相同的密钥.我也将使用相同的密钥.
我听说过一种名为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))
Run Code Online (Sandbox Code Playgroud)
我想将保存在/ home/ubuntu/Desktop/Resized_Images /中的已调整大小的照片发送到Amazon S3上的djangobucket中的Bob的文件夹,并将其公开显示.
谢谢你的帮助.
编辑 我发现此链接:http://www.laurentluce.com/posts/upload-and-download-files-tofrom-amazon-s3-using-pythondjango/
我的情况并不完全如何使用它,但我认为我走在正确的轨道上.
小智 17
boto 是最好的方法.
您可以使用以下方式获取现有存储桶
get_bucket(bucket_name, validate=True, headers=None)
Run Code Online (Sandbox Code Playgroud)
安装boto后,此代码应该执行您需要执行的操作
from boto.s3.connection import S3Connection
from boto.s3.key import Key
conn = S3Connection('<aws access key>', '<aws secret key>')
bucket = conn.get_bucket('<bucket name>')
k = Key(bucket)
k.key = 'file_path_on_s3' # for example, 'images/bob/resized_image1.png'
k.set_contents_from_file(resized_photo)
Run Code Online (Sandbox Code Playgroud)
以下是Boto API和Boto S3 Doc的一些链接
| 归档时间: |
|
| 查看次数: |
9688 次 |
| 最近记录: |