背景
尝试使用python通过HTTP协议进行文件上传。改写对象是使用JavaScript编写的web页面。
现在主要对formData的内容进行分析
formData内容
var formData = new FormData
formData.append('image-info',JSON.stringify({
'Update-Session': da605cb3bb354e5fa0dde7675f1315d3,
'Update-Packet': 1,
}));
formData.append('image', fileData);
formData的分析
formData中包含以下内容
1,一个有关“image-info”的配置字典
2,待发送的二进制文件“image”
python改写
主要用到三个模块1、requests 2、requests_toolbelt 3、json
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
fields = {
"image-info":json.dumps({
'Update-Session': da605cb3bb354e5fa0dde7675f1315d3,
'Update-Packet': 1
}),
"image": fileData
}
#MultipartEncoder没有办法encode字典对象,所以需要使用json.dunps进行json化
#fileData为二进制文件
mutiplepartData = MultipartEncoder(fields=fields)#用来规范化二进制的传输格式
#必须将HTTP的消息头中“Content-Type”设置为mutiplepartData.content_type
headers = {
"Content-Type": mutiplepartData.content_type,
}
#使用requests模块将内容发送至目标地址
ret = requests.post('http://169.254.1.100:8080/api/UpdatePacket',headers=headers,data=mutiplepartData)
print(ret.text)