【问题标题】:Getting image/video from html into java servlet as new File()将图像/视频从 html 获取到 java servlet 作为 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")))

如何检索该文件? 提前致谢。

【问题讨论】:

  • 这两个链接应该回答你的问题
  • 如果您回答我的问题并提供 javascript、html 和 java 示例代码,我们将不胜感激,因为它似乎对我不起作用
  • 您在服务器端使用什么 Java 技术?普通的servlet? JAX-RS?春天MVC?你在使用 ORM 吗?休眠? JPA?或 JDBC 直接连接到哪个数据库? MySQL? PostgreSQL?你也可以使用jQuery客户端吗?

标签: javascript java html xmlhttprequest


【解决方案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】:

    我认为你错过了一些要点。

    1. 在您的 JavaScript 代码中,您似乎只是创建了请求。但是你没有对结果做出回应。

      req.addEventListener("load", reqListener);
      

      你应该这样定义 reqListener:

      function reqListener () {
          // Here try to handle the response text, using "this.responseText"
          console.log(this.responseText);
      }
      

      在此处查看完整信息: Using XMLHttpRequest

    2. 同样在您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-07
      • 2012-10-12
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多