为什么我需要在通过表单发送数据时包含enctype =“multipart / form-data”,但在通过xmlhttprequest发送时不需要

时间:2014-08-22 08:56:26

标签: javascript html ajax forms

当HTML表单包含<input type="file">时,我需要在表单上指定enctype="multipart/form-data"属性。但是,当我通过XMLHttpRequest发送二进制文件时,我不需要在任何地方指定该类型:

var builder = new BlobBuilder();
builder.append("Hello world!");
var blob = builder.getBlob("text/plain");

var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
oReq.send(blob);

为什么会这样?

1 个答案:

答案 0 :(得分:2)

使用表单,您告诉浏览器如何格式化数据以将其发送到服务器。 (enctype的默认值不支持文件。

使用XHR,您自己格式化数据。 (也就是说,仍然使用addHeader为您的POST正文指定合适的内容类型。)