有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript将图像/视频从html作为新文件()导入Javaservlet

我想从计算机上获取文件(图像或视频)

<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")))

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


共 (2) 个答案

  1. # 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);
    

    爪哇

    @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. # 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