如果我有文本字符串,如何使用PUT方法发送文件? 例如:
var new_data = 'hello world';
var formData = new FormData();
formData.append("thefile", new_data);
var new_req = new XMLHttpRequest();
new_req.open("PUT", p.href, false);
new_req.setRequestHeader("Content-Type", "multipart/form-data");
new_req.send(formData);
我回复了HTML错误500的空响应。我做错了什么?上传网址是对的,我查了一下。
答案 0 :(得分:1)
尝试添加manifest.json
:
"permissions": [
"http://*.disk.yandex.net/"
]
阅读:https://developer.chrome.com/extensions/xhr
中阅读此内容唯一的例外是针对基于Chromium的浏览器扩展程序:
Origin headers
以模式chrome-extension://
开头的内容将被忽略。
所以唯一缺少的就是在manifest.json中设置权限。
注意:PUT只是HTTP“动词”中指令的一部分 协议,它一个人没有。这就是设置SERVER-SIDE的原因 语言。
PUT
和POST
相似。 POST
需要时间(取决于您将如何发送文件,例如。RAW
):
.overrideMimeType("multipart/form-data");
.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
换句话说,试试这个:
xmlhttp.open("PUT", p.href, false);
if (xmlhttp && xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("multipart/form-data");
}
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(formData);
注意:首选使用Async,如下所示:
xmlhttp.open("PUT", p.href, true);//Async requires "true"
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log("OK", xmlhttp.responseText);
} else if (xmlhttp.readyState == 4) {
console.log("ERROR", xmlhttp.status);
}
};
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(formData);
秒> 注意:异步xmlhttp.open("PUT", p.href, true);
注意:同步xmlhttp.open("PUT", p.href, false);
错误500可能是htaccess(如果是apache)或服务器中的其他配置的问题。