如何在烧瓶中读取多部分/表单数据[重复]
Posted
技术标签:
【中文标题】如何在烧瓶中读取多部分/表单数据[重复]【英文标题】:how to read multipart/form-data in flask [duplicate] 【发布时间】:2017-03-17 19:21:30 【问题描述】:我在读取通过 XMLHttpRequest 发布的烧瓶中的数据时遇到问题。我正在使用这个 jquery 插件来裁剪图像并上传到服务器
https://codecanyon.net/item/slim-image-cropper-responsive-uploading-and-ratio-cropping-plugin/16364167
数据 - 在使用 XMLHttpRequest 将图像发送到服务器之前,在 json 中收集和隐藏图像信息
var formData = new FormData();
var name = "ex"; // Just an example
formData.append(name, JSON.stringify(data));
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.send(formData);
在我的烧瓶代码中,我打印请求的标题以查看内容类型
print(request.headers)
我看到了这个
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,sv;q=0.6,fr;q=0.4
Host: localhost:5000
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5e7lMMIQavXzSZg9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Connection: keep-alive
Content-Length: 62714
Origin: http://localhost:5000
Pragma: no-cache
Cache-Control: no-cache
Cookie: session=eyJfZnJlc2giOmZhbHNlLCJjc3JmX3Rva2VuIjoiYTJhNTNlYzRkYjZlYzgzNzM2NDQ1ZjM5ZDAxNmY0MTlmY2RiZmRiOCIsInVzZXJuYW1lIjoidXNlcjEifQ.Cv2ADg.d8chDgzAA7fS2P9KcwzRINvLGOU
Referer: http://localhost:5000/loadProfile
Accept: */*
我无法使用
阅读内容request.get_json()
如果我试试这个
print(request.get_json())
data = request.get_json()
print(data['name'])
TypeError: 'NoneType' 对象不可下标
在 HTTP 发布请求中我可以看到这个
------WebKitFormBoundary0okhJV9YZK0uArTm 内容处置:表单数据;名称=“苗条[]” "server":["status":"SUCCESS"],"meta":,"input":"name":"sample-img.jpg","type":"image/jpeg" ,"尺寸":41319,"宽度":400,"高度":300,"输出":"宽度":400,"高度":300,"图像":"数据:图像/jpeg;base64, /9j/.......
据作者介绍
Slim 使用 POST 请求以 JSON 格式(包含 base64 编码的图像)发送数据。
格式:
"server":null,
"meta":
,
"input":
"name":"stars.jpg",
"type":"image/jpeg",
"size":null,
"width":800,
"height":1200
,
"output":
"width":150,
"height":100,
"image":"data:image/jpeg;base64..."
,
"actions":
"rotation":0,
"crop":
"x":0,
"y":333.33333333333337,
"width":150,
"height":100.10460251046025,
"type":"manual"
,
"size":null
如果我这样做了
print(request.form)
我可以看到
ImmutableMultiDict([('slim[]', '"server":["status":"SUCCESS"],"meta":,"input":"name":"sample- img.jpg","type":"image/jpeg","size":41319,"width":400,"height":300,"output":"width":400,"height":300 "image":"数据:image/jpeg;base64,/9j/4AAQ....
但我不确定如何阅读此帖子数据。例如获取名称的值
【问题讨论】:
【参考方案1】:您可以使用 request.form.to_dict() 将结果转换为字典形式。
或者你可以使用这样的东西:
from werkzeug.datastructures import ImmutableMultiDict
data = dict(request.form)
print data
【讨论】:
【参考方案2】:您将表单数据作为键值对发送 试试这个:
import json
ex = json.loads(request.form.get('ex'))
print ex
【讨论】:
以上是关于如何在烧瓶中读取多部分/表单数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章