我正在为Chrome编写扩展程序,我需要将用户当前所在页面上的文件上传到我的服务器进行处理,但我无法弄清楚如何上传文件.我认为只是将链接传递给服务器并让服务器下载文件,但是如果站点需要身份验证,这将无法正常工作.是否可以通过Chrome扩展程序将文件上传到我的服务器?
使用HTML5的File API,上传是通过upload在XMLHttpRequest.中调用的对象进行的.这是我正在使用的教程(以及Google缓存镜像,因为它现在已经关闭).这是相关部分:
// Uploading - for Firefox, Google Chrome and Safari
xhr = new XMLHttpRequest();
// Update progress bar
xhr.upload.addEventListener("progress", function (evt) {
Run Code Online (Sandbox Code Playgroud)
如您所见,为了跟踪上传进度,该XMLHttpRequest对象有一个名为的属性upload,我们可以添加一个事件处理程序.
我的问题是:jQuery是一个等价的吗?.我试图让代码尽可能干净,并且尽可能地跨浏览器兼容,因为每当微软认为这是一个好主意时(尽管听起来会像2012年或2013年那样).
我正在尝试发送multipart/form-data内容类型请求:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
alert(xhr.responseText);
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type","multipart/form-data; boundary=---------------------------275932272513031");
xhr.send('-----------------------------275932272513031 Content-Disposition: form-data; name="name"
test
----------------------------275932272513031--');
Run Code Online (Sandbox Code Playgroud)
然后在php我只打印$_POST数组
print_r($_POST);
Run Code Online (Sandbox Code Playgroud)
但我每次都得到一个空数组.我希望看到
Array (
name => "test"
)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?