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

时间:2018-02-06 19:14:15

标签: javascript java html xmlhttprequest

我想从

获取文件(图片或视频)
<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 个答案:

答案 0 :(得分:7)

我修好了。这是:

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>

答案 1 :(得分:0)

我想你错过了一些观点。

  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