检查Flask上传用户是否未选择文件
如果用户在表单中没有选择文件(这对应于 PHP中的UPLOAD_ERR_NO_FILE),那么 request.files['file']
也会返回一个 FileStorage
对象。我现在是用 request.files['file'].filename == ''
来检查,这样做有没有更好的方法呢?我看过 Flask文档,但没找到答案。
另外,'file' in request.files
在用户没有选择文件的情况下是无法工作的,因为浏览器会提交一个长度为0且文件名为空(即'')的部分。
还有,我该如何检测上传的文件是否只部分上传了(这对应于PHP中的 UPLOAD_ERR_PARTIAL)?
3 个回答
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')
7
试试这个:
if not request.files.get('file', None):
pass
如果你想对文件有更多的控制,可以使用这个链接:http://pythonhosted.org/Flask-Uploads/
17
现在我正在使用
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'