flask - Flask同时上传图片和文字
问题描述
所以我在这里想要实现的是同时上传图像和文本。到目前为止它已经工作了,但是在 Flask 上,它request.files
是空的。但是,request.form
返回我这个:
ImmutableMultiDict([('description', u''), ('name', u''), ('file', u'image.jpg')])
当我这样做时type(request.form['file'])
,它以 unicode 形式返回。我如何使它可以显示图像request.files
和文本request.form
<form class="form-area " id="" action="{{ url_for('templater.test') }}" method="post" novalidate>
<label for="name">Name</label>
<input name="name" placeholder="Enter Name" type="text">
<label for="description">Description</label>
<input name="description" placeholder="Enter Description" type="text">
<input type = "file" name = "file" />
<input type = "submit"/>
</form>
@templater.route('/test', methods=['GET', 'POST'])
def test():
print request.form
if request.method == 'POST':
if 'file' not in request.form:
print 'No file part'
return redirect(request.url)
file = request.form['file']
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(main.app.config['UPLOAD_FOLDER'], filename))
return jsonify({'status':'something'})
解决方案
您应该enctype
在表单标签中指定属性:
<form class="form-area " id="" action="{{ url_for('templater.test') }}" method="post" novalidate enctype="multipart/form-data">
通过添加,您应该能够调用文件
files = request.files.getlist('file')
for file in files:
[...]
其他输入仍以以下形式提供:
request.form.get('name')
推荐阅读
- python - 嵌套在 padas df 中的 for 和 if 条件
- hibernate - 如果两个微服务共享同一个数据库表,如何保持休眠数据的一致性
- javascript - 异步/等待同步函数改变反应状态
- html - 当前输入值未传递给 AngularJS 中的事件处理程序
- r - 将多列合并为一列并根据它来自的列重命名值
- javascript - GET API_Link net::ERR_FAILED -------- Uncaught (in promise) TypeError: Failed to fetch
- python - 尝试使用 Seaborn 绘制绘图,但错误提示“str”对象没有属性“get”
- swift - onReceive String.publisher 导致无限循环
- java - 如何使用 ReactorCloudFoundryClient 启动 CloudFoundry 应用程序?
- c# - 替换字符串中的“\”