我有一个表单数据以及要在同一POST中发送的文件。例如,{duration:2000,file:test.wav}。我在使用python请求的multipart / form-data发布中看到了很多线程。它们很有用,特别是this one。
我的示例请求如下:
files = {'file': ('wavfile', open(filename, 'rb'))}
data = {'duration': duration}
headers = {'content-type': 'multipart/form-data'}
r = self.session.post(url, files=files, data=data, headers=headers)
但是当我执行上面的代码时,我收到了这个错误:
5:59:55.338 Dbg 09900 [DEBUG]解析来自handler [null]的异常:org.springframework.web.multipart.MultipartException:无法解析multipart servlet请求;嵌套异常是org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界。
所以我的问题是:1)如何查看正在发送的请求的内容?无法使用wireshark,它不在网络上。 2)为什么编码数据中缺少边界?我错过了什么,请指出。
答案 0 :(得分:42)
你不应该自己设置那个标题。我们使用边界正确设置标题。如果你设置了那个标题,我们就不会和你的服务器不知道期望的边界(因为它被添加到标题中)。删除您的自定义Content-Type标题,你会没事的。
答案 1 :(得分:6)
使用显式" multipart / form-data"取出Content-Type标头;成功了!
答案 2 :(得分:0)
要专门添加边界,请在标题中添加以下内容:
headers = {
'content-type': 'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd'
}