我尝试使用requests
包发送多部分POST请求。
以下是代码:
with open("small-car.png", "rb") as image_file:
encoded_image = "data:image/png;base64,%s" % base64.b64encode(image_file.read())
files = {'img': encoded_image}
r = requests.post(url, files=files)
在服务器端,我依靠以下烧瓶代码对其进行解码:
data = request.form.to_dict()
但是,data
始终是{}
。 wireshark的峰值显示如下:
这似乎不对。正确的标题不应包含我认为的filename=xxx
部分。
有没有办法调整requests
来做正确的事情?
答案 0 :(得分:0)
我认为你可以做到以下几点:
data = {'file': files}
response = requests.put(url=url, data=data)
此外,您可以在烧录代码(import ipdb; ipdb.set_trace()
)中添加跟踪,并检查在Python中发布的内容,而不是使用wireshark。
答案 1 :(得分:0)
我很确定你的标题是好的。 在flash中单独接收文件
检查一下:http://flask.pocoo.org/docs/0.10/patterns/fileuploads/
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
答案 2 :(得分:0)
如果您要排除filename
部分,请执行以下操作:
data = {'img': ('', encoded_image)}
requests.post(url, files=data)
元组的第一个元素将被视为文件名,因为它是空的,它将被排除。