【发布时间】:2014-12-04 02:58:35
【问题描述】:
我有一段代码通过 POST 从表单中获取文件。
file = request.FILES['f']
将此文件保存到我的媒体文件夹中的最简单方法是什么
settings.MEDIA_ROOT
我正在查看 this answer 等,但我遇到了涉及未定义名称和无效“块”方法的错误。
一定有一种简单的方法可以做到这一点?
编辑 在我的views.py中上传方法:
def upload(request):
folder = request.path.replace("/", "_")
uploaded_filename = request.FILES['f'].name
# create the folder if it doesn't exist.
try:
os.mkdir(os.path.join(settings.MEDIA_ROOT, folder))
except:
pass
# save the uploaded file inside that folder.
full_filename = os.path.join(settings.MEDIA_ROOT, folder, uploaded_filename)
fout = open(full_filename, 'wb+')
file_content = ContentFile( request.FILES['f'].read() )
# Iterate through the chunks.
for chunk in file_content.chunks():
fout.write(chunk)
fout.close()
【问题讨论】:
-
是否可以将其保存在数据库中?您提到的发布的解决方案似乎是正确的。您可以发布错误消息吗?您是否阅读了答案的第二篇文章 - 它讲述了块错误以及如何修复它
-
请查看我的编辑,我现在得到“未定义全局名称'ContentFile'”
-
你可以在django.core.files图书馆找到它
-
见answer的第二部分,别忘了从django.core.files导入ContentFile
-
关于在数据库中保存文件的评论。不要这样做。文件属于文件系统,而不是数据库。您的数据库应该只记录文件的存储位置。
标签: python django django-models django-forms