Получение изображения/видео из html в Java-сервлет как новый файл()
Я хочу получить файл (изображение или видео) из
<input type='file' id='file_i'/>
// Not this <input type='submit'/>
Используя XMLHttpRequest
, как этот
function img() {
var fd = new FormData();
fd.append('file', document.getElementById("file_i").files[0]);
var req;
if (window.ActiveXObject) {
req=new ActiveXObject();
} else {
req=new XMLHttpRequest();
}
req.open("post", "Image", true);
req.send(fd);
}
например.
Затем в сервлете выполните следующее:
new FileInputStream(new File(request.getParameter("file")))
Как я могу получить этот файл?
Спасибо заранее.
Ответы
Ответ 1
Я исправил его. Вот он:
JAVASCRIPT
var fd = new FormData();
fd.append('file', document.getElementById("file_i").files[0]);
var req;
if (window.ActiveXObject) {
req=new ActiveXObject();
} else {
req=new XMLHttpRequest();
}
req.open("post", "Image", true);
req.send(fd);
JAVA
@MultipartConfig
public class addImage extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Part filePart = request.getPart("file");
InputStream fileContent = filePart.getInputStream();
}
}
XML
<servlet>
<servlet-name>Add Image</servlet-name>
<servlet-class>servlets.addImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Add Image</servlet-name>
<url-pattern>/Image</url-pattern>
</servlet-mapping>
Ответ 2
Думаю, вы пропустили несколько моментов.
-
Кажется, в вашем JavaScript-коде вы просто создаете запрос. Но вы не ответили на результаты.
req.addEventListener("load", reqListener);
Вы должны определить reqListener следующим образом:
function reqListener () {
// Here try to handle the response text, using "this.responseText"
console.log(this.responseText);
}
Смотрите полную информацию здесь:
Использование XMLHttpRequest
-
Также в вашем Java-коде вы только что заявили, что создали поток файлов.
Вы должны прочитать этот входной поток в поток вывода запроса. Также вы должны установить заголовок Content-Type: put_your_mime_type_here
, например: Content-Type: application/json
, если ваш файл является json файлом, Content-Type: image/png
, если ваш файл является PNG-изображением.
См. пример здесь: Пример создания URL-адреса загрузки файла в Java