我有一个文件的路径,想要通过XMLHttpRequest对象将其发送到rest webservice服务器。Post请求如下:
var url = "http://localhost:8080/RestWSGS/jersey/gridsense";
var boundary = "--------------" + (new Date).getTime();
xmlHttp.open('POST', url, true);
xmlHttp.onreadystatechange = function ()
{
if (this.readyState != 4)
return;
var result =this.responseText;
document.write(result);
};
xmlHttp.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
var part ="";
part += 'Content-Disposition: form-data; ';
part += 'name="' + document.getElementById("filename").name + '" ; ';
//alert(document.getElementById("filename").value);
part += 'filename="'+ document.getElementById("filename").value + '";\r\n';
part += "Content-Type: application/xml";
part += "\r\n\r\n"; // marks end of the headers part
part += 'filename="'+ document.getElementById("filename").value + '";\r\n';
part+= data;
var request = "--" + boundary + "\r\n";
request+= part /* + "--" + boundary + "\r\n" */;
request+= "--" + boundary + "--" + "\r\n";
alert(request);
xmlHttp.send(request);
我想发送的数据位于客户端本地磁盘上。 我想使用get方法获取它:
var str = document.getElementById("filename").value;
var data;
var xmlhttp1 = getNewHTTPObject();
xmlhttp1.open("GET",
"file:///New Folder/" +document.getElementById("filename").value , false);
xmlhttp1.send(null);
alert('hi' + xmlhttp1.status);
xmlhttp1.onreadystatechange = function() {
if (this.status == 0)
{
alert("resp " + this.responseText);
data = this.responseText;
}
}
file://协议是不起作用的。如果我把文件放在客户端目录中并删除file:///,那么我至少可以看到xmlhttprequest打开并给出状态码200(我认为是好的!!)。我读到本地文件时要检查状态==0而不是readystatus==4,所以我这样做了,但它仍然将数据变量作为未定义,并且文件不会发送到服务器。最初当我将表单操作设为我的rest url时,上传很好。由于我没有使用html5,因此无法从input type=file元素获取文件对象。我想直接使用xmlhttprequest对象而不是表单元素来实现这一点。
请帮我解决这个问题,提供任何建议或提示。
即使我使用表单提交进行上传,如何使用web服务的返回值?这就是我需要使用xmlhttpRequest的原因。如果有人能建议如何使用操作的返回值,那就太好了!