37

我有一个表单数据以及要在同一个 POST 中发送的文件。例如,{持续时间:2000,文件:test.wav}。我在这里看到了许多关于使用 python 请求发布多部分/表单数据的线程。它们很有用,尤其是这个

我的示例请求如下:

    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] 正在解决来自处理程序 [null] 的异常:org.springframework.web.multipart.MultipartException:无法解析多部分 servlet 请求;嵌套异常是 org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界。

所以我的问题是:1)我怎样才能看到正在发送的请求的内容?无法使用wireshark,它不在网络上。2)为什么编码数据中缺少边界?有没有漏掉什么,请指出。

4

3 回答 3

73

您永远不应该自己设置该标题。我们用边界正确设置标题。如果您设置该标头,我们将不会,您的服务器将不知道预期的边界(因为它已添加到标头中)。删除您的自定义 Content-Type 标头,您会没事的。

于 2013-07-03T02:02:12.017 回答
8

使用明确的“multipart/form-data”取出 Content-Type 标头有效!

于 2015-10-28T05:49:10.850 回答
1

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

headers = {
    'content-type': 'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd'
}
于 2019-07-19T07:10:41.657 回答