在我的项目中,我需要上传许多文件,其中大小可以达到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:该文件被上传到上传文件夹,但是在数据库中进行条目时,它会引发上述错误的异常。
编辑2:找到了解决方案。只需要将以下行添加到settings.py文件file_upload_max_memory_size = 5242880
2.5 mb是django上的默认内存限制,因为它是内存的。
上传限制
" ...在类似Unix的平台上,这意味着您可以期待Django 生成一个称为/tmp/tmpzfp6i6.upload之类的文件。如果 上传足够大,您可以观看此文件的大小,因为Django 将数据流到磁盘上。"
运行以监视文件大小, watch -n 1 ls -alh '/tmp/tmp3v35kv5z.upload.pdf'
您也可以根据需要使用自定义文件用手来控制文件限制。
filehandler