python - 如何通过 Flask 请求文件属性获取 Python 字典
问题描述
随着server.py
运行:
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/test', methods=['GET','POST'])
def route():
print('got files: %s' % request.files)
return Response()
if __name__ == '__main__':
app.run('0.0.0.0', 5000)
使用发送请求client.py
:
import json, requests
dictionary_1 = {"file": {"url": "https://bootstrap.pypa.io/get-pip.py"}}
files = [('dictionary_1', ('get-pip.py', json.dumps(dictionary_1), 'application/json'))]
response = requests.post('http://127.0.0.1:5000/test', files=files)
服务器记录它收到请求:
got files: ImmutableMultiDict([('dictionary_1', <FileStorage: u'get-pip.py' ('application/json')>)])
显然,dictionary_1
被作为FileStorage
对象接收。如何将接收FileStorage
到的变成 Python 字典?
稍后编辑
可能的重复帖子没有说明如何发送和解包通过发送的 Python 字典对象requests(files=list())
解决方案
发生这种情况是因为您发布的是文件而不是数据。这应该有效:
import flask
app = flask.Flask(__name__)
@app.route('/test', methods=['GET','POST'])
def route():
print('got data: {}'.format(flask.request.json))
return Response()
if __name__ == '__main__':
app.run('0.0.0.0', 5000)
然后将数据发送到您的应用程序
import requests
dictionary_1 = {"file": {"url": "https://bootstrap.pypa.io/get-pip.py"}}
response = requests.post('http://127.0.0.1:5000/test', json=dictionary_1)
在您的示例中,除非我误解了某些内容,否则无需发布文件
推荐阅读
- python - 在 Pandas Column 中搜索每行值包含列表的字符串
- ruby-on-rails - Postgres 数组格式错误的数组字面量
- c# - 为 JsonSerializer.DeserializeAsync 动态创建一个类型?
- python - Tkinter 无法配置
- google-drive-shared-drive - 如何通过 gshell 导航到共享的谷歌驱动器?
- jmeter - Jmeter测试中每次迭代/循环中的增量变量
- git-for-windows - 无法初始化 git 存储库,因为 .git:没有这样的文件或目录
- javascript - 在我的 Javascript 应用程序上设置 Firebase 时,我可以使用 Parcel.JS 捆绑器吗?
- post - Python:运行带有错误消息的 POST 请求
- sql - 如何(取消)将多个指标转换为单个列?