在 Content-Type:multipart/form-data 的情况下,如何一次从 Flask 请求对象中获取多个图像?
How to get multiple images from Flask request object at once in case of Content-Type:multipart/form-data?
我应该从请求中获取多个图像文件,但我找不到正确拆分字节字符串 request.files[key].read()
以从中提取 np.ndarrays
的方法。
files[key]
只给出一个在 HTML
中有 name=key
的对象,而 .read()
只给出这个文件的数据。所以没必要拆分。
如果你有很多带有 name=key
的文件,那么你需要 files.getlist(key)
来获取所有文件的列表,然后使用 for
-loop 分别读取每个文件。
for item in request.files.getlist('image'):
data = item.read()
print('len:', len(data))
最小工作示例:
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def image():
if request.method == "POST":
#print('args :', request.args)
#print('form :', request.form)
#print('json :', request.json)
#print('files:', request.files)
print(request.files['image'])
print(request.files.getlist('image'))
for item in request.files.getlist('image'):
data = item.read()
print('len:', len(data))
return render_template_string('''
<form method="POST" enctype="multipart/form-data">
Single image: <input type="file" name="image"/></br>
Multiple images: <input type="file" name="image" multiple/></br>
<button type="submit" name="button" value="send">Send</button>
</form>
''')
if __name__ == '__main__':
#app.debug = True
app.run()
我应该从请求中获取多个图像文件,但我找不到正确拆分字节字符串 request.files[key].read()
以从中提取 np.ndarrays
的方法。
files[key]
只给出一个在 HTML
中有 name=key
的对象,而 .read()
只给出这个文件的数据。所以没必要拆分。
如果你有很多带有 name=key
的文件,那么你需要 files.getlist(key)
来获取所有文件的列表,然后使用 for
-loop 分别读取每个文件。
for item in request.files.getlist('image'):
data = item.read()
print('len:', len(data))
最小工作示例:
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def image():
if request.method == "POST":
#print('args :', request.args)
#print('form :', request.form)
#print('json :', request.json)
#print('files:', request.files)
print(request.files['image'])
print(request.files.getlist('image'))
for item in request.files.getlist('image'):
data = item.read()
print('len:', len(data))
return render_template_string('''
<form method="POST" enctype="multipart/form-data">
Single image: <input type="file" name="image"/></br>
Multiple images: <input type="file" name="image" multiple/></br>
<button type="submit" name="button" value="send">Send</button>
</form>
''')
if __name__ == '__main__':
#app.debug = True
app.run()