在我的项目中,我需要上传许多文件,其大小可以达到50-60 MB。我正在使用Django文件字段上传文件。但是,当文件大小超过2.5MB时,就会出现此错误 [Errno 2]没有这样的文件或目录:'/tmp/tmp3v35kv5z.upload.pdf'
我尝试了不同的文件大小。 <2MB的文件可以正常工作
Settings.py看起来像这样:
STATIC_URL = '/static/'
MEDIA_URL = '/uploads/'
MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
CONTENT_TYPES = ['image', 'document']
# 2.5MB - 2621440
# 5MB - 5242880
# 10MB - 10485760
# 20MB - 20971520
# 50MB - 5242880
# 100MB 104857600
# 250MB - 214958080
# 500MB - 429916160
MAX_UPLOAD_SIZE = "104857600"
view.py看起来像这样:
if request.method == 'POST' and request.FILES['fileToUpload']:
myfile = request.FILES['fileToUpload']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
path = fs.url(filename)
student_roll_no = request.POST.get('roll_no')
document_type = request.POST.get('doctype')
department = request.POST.get('department')
title = request.POST.get('title')
subject = request.POST.get('subject')
date_of_submission = datetime.datetime.now().date()
document_code = student_roll_no+'_'+document_type
...
Document.objects.create(code = document_code, document = request.FILES['fileToUpload'], path = path, date_of_submission = date_of_submission, type = document_type, title = title, department = department, subject = subject, updation_allowed = '0')
预期结果:文件上传成功! 当前结果:[Errno 2]没有这样的文件或目录:'/tmp/tmp3v35kv5z.upload.pdf'
编辑1: 该文件正在上传到uploads文件夹,但是在数据库中进行输入时会引发上述错误的异常。
编辑2: 找到了解决方案。只需将以下行添加到settings.py文件 FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880
答案 0 :(得分:0)
2.5 MB是Django的默认内存限制,因为它在内存中。
“ ......在类似Unix的平台上,这意味着您可以期望Django 生成一个名为/tmp/tmpzfp6I6.upload之类的文件。如果 上传足够大,您可以看到该文件的大小随着Django的增长而增加 将数据流式传输到磁盘上。”
运行以监视文件大小watch -n 1 ls -alh '/tmp/tmp3v35kv5z.upload.pdf'
您还可以根据需要使用自定义FileHandler来控制文件限制。