Python 用户上载的图像未保存到生产中的媒体文件夹
我正在建立一个Django网站,用户可以通过一个表单上传一张图片,这个表单可以在网站上区分他们。这些文件保存在/grad/media/文件夹中(其中grad是应用程序的名称) 这是实现这一点的代码:Python 用户上载的图像未保存到生产中的媒体文件夹,python,django,heroku,web,Python,Django,Heroku,Web,我正在建立一个Django网站,用户可以通过一个表单上传一张图片,这个表单可以在网站上区分他们。这些文件保存在/grad/media/文件夹中(其中grad是应用程序的名称) 这是实现这一点的代码: uni_object = University.objects.get(user=request.user) logo = uni_object.logo if request.method == "POST": form = UpdateUniversityForm(request.POS
uni_object = University.objects.get(user=request.user)
logo = uni_object.logo
if request.method == "POST":
form = UpdateUniversityForm(request.POST, request.FILES)
if form.is_valid():
data = form.cleaned_data
request.user.email = data['email']
request.user.save()
uni_object.university_name = data['university_name']
uni_object.website = data['website']
if request.FILES and request.FILES['logo'] != '':
new_logo = data['logo']
image = Image.open(new_logo)
image = image.resize((400,400), Image.ANTIALIAS)
thumb_io = StringIO.StringIO()
image.save(thumb_io,format='JPEG')
new_file_name = str(int(time.time()))
thumb_file = InMemoryUploadedFile(thumb_io, None, '{0}.jpg'.format(new_file_name), 'image/jpeg',
thumb_io.len, None)
uni_object.logo = thumb_file
uni_object.save()
updated = True
logo = uni_object.logo
基本上我需要把它转换成一个400x400的正方形,然后保存它。此代码将在localhost上运行,并且文件将正确保存
但是,在调试为False的Heroku中:
- 相同的代码不会将图片保存在媒体文件夹中
- 即使通过管理面板手动保存图片,也不会将图片保存到媒体文件夹中
- 即使照片存在于媒体文件夹中,也不会在网站上呈现
- 媒体文件夹被推送到Heroku,因此本地的所有图片也都出现在Heroku上
2016-10-22T15:39:13.652167+00:00 heroku[router]: at=info method=GET path="/media/1477150753.jpg"
host=www.gradba.se request_id=7e545ef5-92cf-406c-88c8-26d140541884 fwd="31.50.136.136,141.101.98.8"
dyno=web.1 connect=0ms service=21ms status=200 bytes=6354
有人能告诉我为什么会这样吗?我认为media_root设置正确,因为它在dev上工作
谢谢 您的设置是什么?这并不能直接回答问题,但请注意,此设计不适用于Heroku。应用程序运行在一个“动态”文件系统中,该文件系统不会在重新启动时保存数据;dynos每天至少重新启动一次。因此,任何写入媒体根目录的文件都将消失。您将需要使用外部文件或blob存储-查看您的设置是什么?这不会直接回答问题,但请注意,此设计不适用于Heroku。应用程序运行在一个“动态”文件系统中,该文件系统不会在重新启动时保存数据;dynos每天至少重新启动一次。因此,任何写入媒体根目录的文件都将消失。您将需要使用外部文件或blob存储-签出