我有一段代码,可以通过POST从表单中获取文件。
file = request.FILES['f']
将此文件保存到
settings.MEDIA_ROOT
我在查看this answer等等,但是我在引用未定义的名称和无效的“chunks”方法时出错。
一定有一个简单的方法可以做到这一点吗?
编辑 my 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()
使用
default_storage
比使用FileSystemStorage
要好。您可以使用
FileSystemStorage
将文件保存到MEDIA_ROOT
中,但将来更改DEFAULT_FILE_STORAGE
后端时,这可能不再工作。如果你使用
default_storage
,将来如果你想使用aws、azure等作为多个Django工作者的文件存储,你的代码将不会有任何改变。默认存储使用示例:
您可以使用django
FileField
,它支持指定一个upload_to
参数,如下所示:其中
content_path
可以是字符串或返回字符串的函数。您可以将文件上载到django服务器:
相关问题 更多 >
编程相关推荐