在HTML页面中,我们有一个输入类型文件字段。选择文件后,我们需要使用java调用服务以将该文件传递给服务。这是使用XMLHttpRequest完成的 我们正在使用FormData将文件传递给Java服务,并将其接受为InputStream。但是,当我们尝试保存此InputStream时,它没有正确保存。所选文件是图像文件,当我们保存并尝试打开它时,该文件不显示任何内容。
还有其他方法吗?从javascript发送文件到Java服务并将其保存在服务器上。限制是我们只能使用javascript和java服务。
javascript code
function saveToServer(file) {
const fd = new FormData();
fd.append('thefile', file);
const xhr = new XMLHttpRequest();
xhr.open('POST', JAVA_SERVICE_URL, true);
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onload = function() {
if (xhr.status === 200) {
// this is callback data: url
console.log(xhr.responseText);
}
};
xhr.send(fd);
}
java service
@POST
@Path("/image/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String imageUpload(InputStream uploadedInputStream) throws IOException {
File targetFile1 = new File("c:\\test1.png");
OutputStream os = new FileOutputStream(targetFile1);
FileUtils.copyInputStreamToFile(uploadedInputStream, targetFile1);
return "test";
}