从javascript发送文件到Java服务并将其保存在服务器上

时间:2019-05-24 09:28:32

标签: javascript java html xmlhttprequest

在HTML页面中,我们有一个输入类型文件字段。选择文件后,我们需要使用java调用服务以将该文件传递给服务。这是使用XMLHttpRequest完成的 我们正在使用FormData将文件传递给Java服务,并将其接受为InputStream。但是,当我们尝试保存此InputStream时,它没有正确保存。所选文件是图像文件,当我们保存并尝试打开它时,该文件不显示任何内容。

还有其他方法吗?从javascript发送文件到Java服务并将其保存在服务器上。限制是我们只能使用javascript和java服务。

            javascript code

            function saveToServer(file) {
                    const fd = new FormData();
                    fd.append('thefile', file);
                    const xhr = new XMLHttpRequest();
                    xhr.open('POST', JAVA_SERVICE_URL, true);
                    xhr.setRequestHeader('Content-Type', 'multipart/form-data');
                    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
                    xhr.onload = function() {
                            if (xhr.status === 200) {
                                    // this is callback data: url
                                    console.log(xhr.responseText);
                            }
                    };
                    xhr.send(fd);
            }

            java service

            @POST
            @Path("/image/upload")
            @Consumes(MediaType.MULTIPART_FORM_DATA)
            public String imageUpload(InputStream uploadedInputStream) throws IOException {
                    File targetFile1 = new File("c:\\test1.png");
                    OutputStream os = new FileOutputStream(targetFile1);
                    FileUtils.copyInputStreamToFile(uploadedInputStream, targetFile1);
                    return "test";
            }

0 个答案:

没有答案