На странице HTML у нас есть поле типа файла ввода. При выборе файла нам нужно вызвать сервис в Java, чтобы передать этот файл сервису. Это делается с помощью XMLHttpRequest
Мы используем FormData для передачи файла в сервис java и принимаем его как InputStream. Но когда мы пытаемся сохранить этот InputStream, он не сохраняется правильно. Выбранный файл является графическим файлом, и когда мы сохраняем его и пытаемся открыть, он не показывает никакого содержимого.
Есть ли другой способ сделать это? Отправка файла в сервис java из javascript и сохранение его на сервере. ограничение в том, что мы можем использовать только 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";
}