我实际上想用python在web应用程序上发送mutlipart数据。我正在使用这个非常有用的请求模块(http://requests-fr.readthedocs.org/en/latest/)。
我必须发送一个音频文件(存储在系统本地)和2个参数(GPS协调信息)。
我已经使用curl命令进行操作,但我正在寻找一个Requests python实现。 这是curl命令:
curl -u "user:pass" -F 'audio=@file.wav' -F "latitude=42.44646" -F "longitude=8.46464" 'http://my_server_ip/web/rest/vocal' -v --digest
这就是我在python请求中尝试这样做的方法:
url = "http://my_server_ip/web/rest/vocal"
files = {'audio' : open('/PATH/record.wav','rb'),'latitude':42.44646,'longitude':8.46464}
r = requests.post(url, auth=HTTPDigestAuth('user','pass'),data=files)
r.json
print r.json
目前,我得到的唯一回应是500错误。
有人明白什么是错的吗?如果您看到更好的解决方案,请随时告诉我:)
问候!
答案 0 :(得分:0)
解决了!
解决方案是将文件和数据分开:
files = {'audio' : open('/PATH//record.wav','rb')}
data = {'latitude':latitude,'longitude':longitude}
并使用BOTH文件和数据参数构建resquest:
r=requests.post(url,auth=HTTPDigestAuth('user','pass'),files=files,data=data)