我目前正在动态调整用户上传图片时的图片大小。原始图片存储在名为djangobucket的存储区中的Amazon S3上。在此存储桶中,包含数千个文件夹。
每个文件夹均以用户命名。我不必担心存储区创建或文件夹创建,因为所有这些操作都是从客户端处理的。
这是一个图:
djangobucket ------------> bob ---------> picture1.jpg
picture2.jpg
picture3.jpg
picture4.jpg
如您所见,鲍勃有很多照片。用户将图片上传到S3后,我将通过URL通过Django下载图片,在这种情况下,它将是:http
:
//s3.amazonaws.com/djangobucket/bob/picture1.jpg
我下载图像并执行图像处理,并将处理后的图像保存在django应用服务器上。
我想将此经过处理的图像发送回bob的文件夹,以便可以在http://s3.amazonaws.com/djangobucket/bob/picture1_processed.jpg上公开访问它。
客户已经可以访问亚马逊密钥和秘密密钥,以便他或她可以将图片上传到此存储桶。服务上的所有用户都使用相同的密钥。我也将使用相同的键。
我听说过一种叫做Boto的东西,但是它涉及创建存储桶,我不确定如何仅执行上传部分。我只关心将图片上传到适当的用户文件夹。
我已经研究了几个小时,所以我去找了这里的专家。
这是我的代码,以便您可以更好地了解我在做什么。
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
是做到这一点的最佳方法。
您可以使用以下方法获取现有存储桶:
get_bucket(bucket_name, validate=True, headers=None)
安装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)
以下是Boto API和Boto S3
Doc的
一些链接
问题内容: 我正在尝试使用将图片上传到亚马逊s3 ,但出现此错误: TypeError:预期opts.s3为对象node_modules / multer-s3 / index.js:69:20 这是我的服务器代码: 为什么我收到此错误? 问题答案: 完成 并正常工作的Node Cheat | 使用multer-s3上传到s3 。 码: 对于完整的回购 : 克隆node-cheat express
问题内容: 我正在上传base64字符串,但GraphQL挂起了。如果我将字符串切成少于50,000个字符,它将起作用。50,000个字符后,graphQL永远不会进入解析函数,但不会给出错误。在较小的字符串上,它可以正常工作。 问题答案: 此处的正确方法是使用AWS AppSync通过复杂类型执行实际的S3上传- 您在此处说明的内容看起来更像是您尝试将base64编码的图像作为字符串保存到字段中
API 当请求命中API时,文件计数为0。我花了整整两天的时间来找出哪里出了问题,但也无法找出问题。我不认为代码有问题,因为对其他一些人来说,它是工作的。我从不同的代码,所以接受答案。谁能帮我弄清楚出了什么问题吗?
我正试图用Alamofire将图像上传到服务器,但我的代码不起作用。这是我的代码: 这是urlRequestWithComponents方法: 这就是我在控制台得到的: 请求{URL:http://tranthanhphongcntt.esy.es/task_manager/IOSFileUpload/ }响应可选({URL:http://tranthanhphongcntt.esy.es/tas
问题内容: 我在Python网络环境中工作,我可以使用boto的key.set_contents_from_filename(path / to / file)将文件从文件系统上传到S3。但是,我想上传已经在网络上的图像(例如https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large)。 我是否应该以某种方式将映像下载到文件系统,然后照常使用boto
我从Firebase存储中获取图像,用相机拍照,或者从图书馆中挑选一张。当其中一个完成时,我有一个类来存储,以便在需要时使用它。 现在我需要将此图像上传到Firebase存储(修改或新建,无所谓)。Firebase允许我使用以下选项之一:或,每个选项分别需要或。 我怎么能把我的,并从它获得一个或用于上传? -- 或者,为了解决这个问题,当我从Firebase存储中检索图像时,如何获取图像的? 无论
我不懂Python语言。有人能帮我理解我是否正确地将此转换为PHP吗?我想用PHP上传一个文件到http://telegra.ph,但是我不知道如何从PHP上传。 以下代码是Python Telegraph API包装库中的一个示例: 这是我的PHP代码,不起作用。有什么不对劲吗? 当我运行此代码时,我看到以下错误: 警告:复制(telegra.ph/upload):无法打开流:HTTP包装器不支
当用户上传图片时,我正在动态调整图像大小。原始图片存储在Amazon S3上一个名为djangobucket的bucket中。在这个桶中,包含数千个文件夹。 每个文件夹都以用户命名。我不必担心存储桶创建或文件夹创建,因为所有这些都是从客户端处理的。 下图为: 如您所见,Bob有许多图片。一旦用户将图片上传到S3,我就会通过URL通过Django下载它,在这种情况下,它将是:http://s3.am