【发布时间】:2015-07-18 04:25:12
【问题描述】:
我有一个功能齐全的 Django Web 表单,可以在 Amazon S3 上上传和存储图像。
我如何还可以为正在上传的同一图像创建一个额外的调整大小的副本,并将它们同时上传到 Amazon S3?
理想情况下,我将另外两个尺寸(120x90、240x180)保存到 S3 上的 /small/ 和 /medium/ 文件夹。
对于上传到 S3,我使用的是 django-storages 和 boto。
我环顾四周并尝试了不同的方法,但似乎所有浮动的拇指生成代码都在处理本地存储的文件或已经存储在在线某处的图像。
我的代码:
models.py
def content_file_name(instance, filename):
ext = filename.split('.')[-1]
name = uuid.uuid4().hex
filename = "%s_%s.%s" % (instance.business_id, name, ext)
path = 'originals'
return os.path.join(path, filename)
class Photo(models.Model):
filename = models.ImageField(upload_to=content_file_name)
phototitle = models.CharField(max_length=50, null=True)
class Meta:
db_table = 'photo'
views.py
def create(request):
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return ...
else:
form = UploadForm()
return render(request, 'upload.html', {
'form': form,
})
form.py
class UplaodForm(ModelForm):
class Meta:
model = Photo
fields = "__all__"
settings.py
AWS_STORAGE_BUCKET_NAME = '...'
AWS_ACCESS_KEY_ID = '...'
AWS_SECRET_ACCESS_KEY = '...'
...
INSTALLED_APPS = (
...
'storages',
【问题讨论】:
-
您也可以使用在上传到存储桶时触发的 Lambda 来执行此操作
-
@Max 你有类似的示例或链接吗?
-
不是临时的,但我敢肯定那里有一些
-
尝试使用github.com/matthewwithanm/django-imagekit,它可以帮助您创建缩略图。
标签: python django amazon-web-services amazon-s3