在服务器端,我使用Python flask:
from flask import Flask, request
app = Flask(__name__)
@app.route("/upload", methods=["POST"])
def upload():
print request.files
print request.form
return "200 ok"
if __name__ == '__main__':
app.run(port=5000)
Java测试代码块:
^{pr2}$我做了测试。服务器端无法从request.forms
读取文件
服务器上的输出:
ImmutableMultiDict([])
ImmutableMultiDict([('image', u'5 ...many data ... fffd'), ('google', u'5i\u ...many data ... fffd'),('title', u'Square Logo')])
为什么我的文件上载到request.form
而不是request.files
。所有二进制文件数据都被解析为unicode字符串。在
接下来,我用Python请求进行测试。遵循以下代码:
resp = requests.post("http://localhost:5000/upload",
files={
"image": open("/Users/lollipop/Downloads/ic_launch.png", "rb"),
"title": open("/Users/lollipop/Downloads/ic_launch.png", "rb"),
"google": open("/Users/lollipop/Downloads/google-logo.png", "rb")
})
服务器端输出被反转:
ImmutableMultiDict([('image', <FileStorage: u'ic_launch.png' (None)>), ('google', <FileStorage: u'google-logo.png' (None)>), ('title', <FileStorage: u'ic_launch.png' (None)>)])
ImmutableMultiDict([])
上载文件在request.files
中,而不是在request.form
中,这是我预期的结果。在
所以。如何使用OkHttp将文件上载到flask服务器,并使用request.files
进行检索。在
request
是烧瓶的要求。在
from flask import request
requests是一个pythonhttp客户端库。在
这只虫子不适合烧瓶。我被这个误导了answer
在文档中的OkHttp食谱上。描述了post一个文件使用下面的代码
实际上,这种方式并不是错误的,它发布的文件不需要提供文件名和其他表单数据。 但这不是通常的用法。在
我们经常需要上传一个具有指定名称和一些键值表单数据的文件。我们甚至需要上传多个文件。在
^{pr2}$相关问题 更多 >
编程相关推荐