将图像/视频从 html 获取到 java servlet 作为 new File()
Posted
技术标签:
【中文标题】将图像/视频从 html 获取到 java servlet 作为 new File()【英文标题】:Getting image/video from html into java servlet as new File() 【发布时间】:2018-07-16 22:44:36 【问题描述】:我想从
中获取文件(图像或视频)<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);
例如。 然后在 servlet 中这样做:
new FileInputStream(new File(request.getParameter("file")))
如何检索该文件? 提前致谢。
【问题讨论】:
可能重复:How to upload files to server using JSP/Servlet? 可能重复:Simulate file form submission with XMLHttpRequest Level 2 这两个链接应该回答你的问题 如果您回答我的问题并提供 javascript、html 和 java 示例代码,我们将不胜感激,因为它似乎对我不起作用 您在服务器端使用什么 Java 技术?普通的servlet? JAX-RS?春天MVC?你在使用 ORM 吗?休眠? JPA?或 JDBC 直接连接到哪个数据库? mysql? PostgreSQL?你也可以使用jQuery客户端吗? 【参考方案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);
在此处查看完整信息: Using XMLHttpRequest
同样在您的 Java 代码中,您刚刚声明您创建了一个文件流。
您应该从此输入流中读取请求的输出流。另外你应该设置标题Content-Type: put_your_mime_type_here
,例如:Content-Type: application/json
,如果你的文件是json文件,Content-Type: image/png
,如果你的文件是PNG图像。
在此处查看示例:Example for making a file download URL in Java
【讨论】:
以上是关于将图像/视频从 html 获取到 java servlet 作为 new File()的主要内容,如果未能解决你的问题,请参考以下文章