如果用户没有选择表单中的文件(等于PHP UPLOAD_ERR_NO_FILE
),request.files['file']
也会返回FileStorage
个对象,我正在使用request.files['file'].filename == ''
进行检查,有更好的方法吗?我看过Flask Doc但无法找到答案。
'file' in request.files
不能用于用户不选择文件,浏览器也会提交0长度,文件名等于'' (空字符串)部分。
如何检测上传文件只是部分上传错误(等于PHP UPLOAD_ERR_PARTIAL)?
答案 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')