我在使用 XHR2 将文件发布到服务器时遇到问题。我有以下问题:
我想使用两个参数和 FILE 对 URL 执行 POST。我希望 POST 请求的行为就像我在后端使用 input=file 一样。
目标是这样的:
function sendForm(FILE_URI, GO_TO) {
var formData = new FormData();
formData.append('param1', "param1");
formData.append('param2', "Param2");
// Now we add the file
formData.append("file", FILE_URI);
var xhr = new XMLHttpRequest();
xhr.open('POST', GO_TO, true);
xhr.onload = function(e) { ... };
xhr.send(formData);
return false; // Prevent page from submitting.
}
此代码不起作用,服务器不会将“文件”参数视为 $_FILE(我使用的是 PHP)。请记住 - 表单中没有文件上传元素,它只是一个带有 URI 的隐藏输入:
<input type="hidden" id="file_item" value="/path/to/image" />
对此有何指导?
更新
我知道编辑 INPUT 文件很糟糕——我不想那样做。我想找到其他方法在没有 FORM 的情况下将文件发布到服务器。我可以使用 XHR2 上传没有表单的 BLOB - 但我正在寻找使用 XHR2 让 Params + File(或 Blob)的方法。