XMLHttpRequest multipart / form-data:多部分中的边界无效

时间:2013-09-03 11:02:08

标签: javascript python xmlhttprequest

我通过XMLHttpRequest发送帖子数据:

var xmlHttp=new XMLHttpRequest();
xmlHttp.open("POST", domain, true);
xmlHttp.setRequestHeader("Content-type","multipart/form-data");
var formData = new FormData();  
formData.append("data", data_json_string);
xmlHttp.send(formData);

在Python中,如果我尝试获取POST(或FILES或任何)数据,我会收到错误:

MultiPartParserError: Invalid boundary in multipart: None

这可不可行吗?我是否真的需要将表单主体创建为单个字符串,我在其中循环参数并在每个参数之前和之后放置一个边界字符串?如果是这样,那应该是什么样的?如何从我的POST中获取它?或者有一种更简单的方法。我环顾四周,对此没有太多了解。

顺便说一句,我使用的是“multipart / form-data”,因为我的字符串数据非常长,这是一种更快的发送方式。当我创建表单并发布它,将其定位到iframe时,它对我有用。但在这里我更喜欢xmlHttp。

1 个答案:

答案 0 :(得分:11)

请勿自行设置Content-Type标题。它将在.send()数据时正确设置,包括手动生成的标题缺少的正确生成的边界。

spec明确指出.send(FormData)将使用多部分/表单数据编码。

  

如果数据是FormData

     

让请求实体主体成为运行multipart / form-data编码算法的结果,数据作为表单数据集,并使用UTF-8作为显式字符编码。

     

令mime类型为“multipart / form-data;”的串联,U + 0020 SPACE字符,“boundary =”,以及multipart / form-data编码算法生成的multipart / form-data边界字符串。

相关问题