使用python请求的多部分数据POST:未找到多部分边界

时间:2013-07-01 23:10:49

标签: python multipartform-data python-requests

我有一个表单数据以及要在同一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)为什么编码数据中缺少边界?我错过了什么,请指出。

3 个答案:

答案 0 :(得分:42)

你不应该自己设置那个标题。我们使用边界正确设置标题。如果你设置了那个标题,我们就不会和你的服务器不知道期望的边界(因为它被添加到标题中)。删除您的自定义Content-Type标题,你会没事的。

答案 1 :(得分:6)

使用显式" multipart / form-data"取出Content-Type标头;成功了!

答案 2 :(得分:0)

要专门添加边界,请在标题中添加以下内容:

headers = {
    'content-type': 'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd'
}