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

时间:2019-05-07 08:44:23

标签: python file-upload django-2.0

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

1 个答案:

答案 0 :(得分:0)

2.5 MB是Django的默认内存限制,因为它在内存中。

Upload Limit

  

“ ......在类似Unix的平台上,这意味着您可以期望Django   生成一个名为/tmp/tmpzfp6I6.upload之类的文件。如果   上传足够大,您可以看到该文件的大小随着Django的增长而增加   将数据流式传输到磁盘上。”

运行以监视文件大小watch -n 1 ls -alh '/tmp/tmp3v35kv5z.upload.pdf'

您还可以根据需要使用自定义FileHandler来控制文件限制。

FileHandler