如何向 XMLHttpRequest 添加请求参数
How to add a request parameter to XMLHttpRequest
我有一个文件 (data
),我使用 XMLHtppRequest
JS 对象发送到 servlet。我对此没有问题。我在 servlet 中通过 request.getInputStream()
接收它,解析它并完美地获取文件。当我还必须 send/receive 文件名时,问题就来了。我试图将该文件名放在 <input type="hidden">
中,并在 javascript 中调用 submit()
方法发送它。关键是我无法使用 servlet 中的 request.getParameter("fileName");
(它始终为 null)获取它,我不知道是我做错了什么还是我不能有 submit()
plus XMLHtmlRequest.send()
在一起(两个 POST)。
Javascript:
function save(data){
var loadedFilename = "exampleFileName";
var xhr = new XMLHttpRequest();
var base64data = (new core.Base64()).convertUTF8ArrayToBase64(data);
xhr.open("POST", "ServletUpload", true);
xhr.send(base64data);
document.getElementById("fileName").value = loadedFilename;
document.forms["formExample"].submit();
}
Servlet doPost 方法:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String fileName = request.getParameter("fileName");
byte[] content = Base64.decodeBase64(IOUtils.toByteArray(request.getInputStream()));
ByteArrayInputStream input = new ByteArrayInputStream(content);
FileOutputStream file = new FileOutputStream("/home/user/Documents/workspace/tests/editingTests.odt");
IOUtils.copy(input, file);
input.close();
file.close();
}
HTML形式:
<form method="POST" name="formExample" action="ServletUpload">
<input type="hidden" name="fileName" id="fileName" />
</form>
function save(data){
var loadedFilename = "exampleFileName";
var xhr = new XMLHttpRequest();
var base64data = (new core.Base64()).convertUTF8ArrayToBase64(data);
//changing this line should fix the problem
xhr.open("POST", "ServletUpload"+"?fileName="+loadedFilename , true);
xhr.send(base64data);
//following two lines are not needed
//document.getElementById("fileName").value = loadedFilename;
//document.forms["formExample"].submit();
}
我有一个文件 (data
),我使用 XMLHtppRequest
JS 对象发送到 servlet。我对此没有问题。我在 servlet 中通过 request.getInputStream()
接收它,解析它并完美地获取文件。当我还必须 send/receive 文件名时,问题就来了。我试图将该文件名放在 <input type="hidden">
中,并在 javascript 中调用 submit()
方法发送它。关键是我无法使用 servlet 中的 request.getParameter("fileName");
(它始终为 null)获取它,我不知道是我做错了什么还是我不能有 submit()
plus XMLHtmlRequest.send()
在一起(两个 POST)。
Javascript:
function save(data){
var loadedFilename = "exampleFileName";
var xhr = new XMLHttpRequest();
var base64data = (new core.Base64()).convertUTF8ArrayToBase64(data);
xhr.open("POST", "ServletUpload", true);
xhr.send(base64data);
document.getElementById("fileName").value = loadedFilename;
document.forms["formExample"].submit();
}
Servlet doPost 方法:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String fileName = request.getParameter("fileName");
byte[] content = Base64.decodeBase64(IOUtils.toByteArray(request.getInputStream()));
ByteArrayInputStream input = new ByteArrayInputStream(content);
FileOutputStream file = new FileOutputStream("/home/user/Documents/workspace/tests/editingTests.odt");
IOUtils.copy(input, file);
input.close();
file.close();
}
HTML形式:
<form method="POST" name="formExample" action="ServletUpload">
<input type="hidden" name="fileName" id="fileName" />
</form>
function save(data){
var loadedFilename = "exampleFileName";
var xhr = new XMLHttpRequest();
var base64data = (new core.Base64()).convertUTF8ArrayToBase64(data);
//changing this line should fix the problem
xhr.open("POST", "ServletUpload"+"?fileName="+loadedFilename , true);
xhr.send(base64data);
//following two lines are not needed
//document.getElementById("fileName").value = loadedFilename;
//document.forms["formExample"].submit();
}