Javascript 使用XMLHttpRequest和FormData将文件从用户目录上载到服务器
我有一个Firefox扩展,它将一些数据写入文本文件,并将其存储在用户目录中的某个位置。Javascript 使用XMLHttpRequest和FormData将文件从用户目录上载到服务器,javascript,php,file-upload,xmlhttprequest,firefox-addon,Javascript,Php,File Upload,Xmlhttprequest,Firefox Addon,我有一个Firefox扩展,它将一些数据写入文本文件,并将其存储在用户目录中的某个位置。 我想将此文件发送到远程服务器。我启动一个文件对象并附加到FormData。但是我从服务器端得到错误400(错误请求)作为响应。 我读了几篇文章,但都假设有一个HTML表单可以从中选择文件。 已编辑:我删除了setRequestHeader行。我再也看不到这个错误了,但是$\u文件是空的,$\u Post是[file]=>[xpconnect-wrapped-nsILocalFile] 这是我的上传方法: v
我想将此文件发送到远程服务器。我启动一个文件对象并附加到
FormData
。但是我从服务器端得到错误400(错误请求)作为响应。我读了几篇文章,但都假设有一个HTML表单可以从中选择文件。 已编辑:我删除了setRequestHeader行。我再也看不到这个错误了,但是$\u文件是空的,$\u Post是[file]=>[xpconnect-wrapped-nsILocalFile] 这是我的上传方法:
var remote_server = "http://foo.com/test/?";
function uploadFile(data)
{
var xmlHttp = null;
fileName = "C:/Users/pro/firefox/test.txt";
var file = Components.classes["@mozilla.org/file/local;1"].
createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(fileName);
var form_data = new FormData();
form_data.append("file", file);
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "POST", remote_server, false );
//xmlHttp.setRequestHeader("Content-type","multipart/form-data");
xmlHttp.send(form_data);
response = xmlHttp.responseText
return response;
}
下面是我服务器端的简单PHP代码:
<?php
echo "hi test";
print_r($_POST);
print_r($_FILES);
?>
已编辑:我删除了setRequestHeader行。我再也看不到这个错误了,但是$\u文件是空的,$\u Post是[file]=>[xpconnect-wrapped-nsILocalFile]。下图显示了从客户端发送到服务器的HTTP数据包
(我的)愚蠢的问题。。你在哪里定义
remote_server
?@cracyon在我的js文件的开头,比如remote_server=“”,你能发布发送错误请求和响应的客户端的网络跟踪吗,这样我们就可以看到发送的实际请求和原始头,等等。。?基本上,核心问题是请求的格式错误,所以服务器拒绝了它。另外,您是否可以访问接收请求的服务器?你能看一下日志来记录错误吗?@crayon请看一下编辑过的部分