Errno 2 没有这样的文件或目录:"/tmp/tmp3v35kv5z.upload.pdf"



在我的项目中,我需要上传许多文件,其中大小可以达到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

最新更新