使用 XMLHttpRequest 发送包含数据的文件

using XMLHttpRequest send file with data

本文关键字:数据 文件 包含 XMLHttpRequest 使用      更新时间:2023-09-26

我正在尝试上传一个文件,包括我想用它添加帖子数据

var xhr = this._xhrs[id] = new XMLHttpRequest();
var queryString = qq.obj2url(params, this._options.action);
        xhr.open("POST", queryString, true);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
        xhr.setRequestHeader("Content-Type", "application/octet-stream");
        xhr.send(file);

如何将x=y添加为发布数据?

var file = $("#file_input")[0].files[0];
//for pure javascript use
var file = document.querySelector('input[type=file]')[0].files[0];
var formData = new FormData();
formData.append("myfile", file);
formData.append("text_unput", "Hello");
var xhr = new XMLHttpRequest();
xhr.open('POST', '/url', true);
xhr.send(formData);

正确的新答案

看看下面@habibutsu的答案

错误的旧答案

您不能将文件表单数据发布为 x=y&w=z。它们是两种不同的内容类型。

对于 x=y,您应该使用如下内容类型:application/x-www-form-urlencoded

我建议你将 AJAX 请求分成两个不同的部分,或者将这些数据插入到 url 中:myUrl + 'query.php?x=y'。

再见

威尔克