如果用户未选择文件,请检查Flask上传

时间:2014-05-12 02:09:47

标签: python file-upload flask

如果用户没有选择表单中的文件(等于PHP UPLOAD_ERR_NO_FILE ),request.files['file']也会返回FileStorage个对象,我正在使用request.files['file'].filename == ''进行检查,有更好的方法吗?我看过Flask Doc但无法找到答案。

'file' in request.files不能用于用户不选择文件,浏览器也会提交0长度,文件名等于'' (空字符串)部分。

如何检测上传文件只是部分上传错误(等于PHP UPLOAD_ERR_PARTIAL)?

3 个答案:

答案 0 :(得分:5)

现在我正在使用

if request.files['file'].filename == '':
    return 'No selected file'

或使用文件长度检查

import os

file = request.files['file']
file.seek(0, os.SEEK_END)
if file.tell() == 0:
    return 'No selected file'

答案 1 :(得分:4)

尝试:

if not request.files.get('file', None):
    pass

如果您想要最大程度地控制文件,可以使用http://pythonhosted.org/Flask-Uploads/

答案 2 :(得分:0)

import imghdr

def validate_image(stream):
    header = stream.read(512)
    stream.seek(0)
    format = imghdr.what(None, header)
    if not format:
        return None
    return '.'+format

class UploadFiles(Resource):
   def post(self):
      doc=request.files.get('image')
      if  validate_image(doc.stream):
         print('file validated')