将上传的图像文件保存在服务器上-Java

时间:2019-06-07 09:26:28

标签: java file-upload image-uploading

我正在尝试让用户将图像上传到服务器。它几乎可以完成预期的工作,但是服务器上的文件已损坏。

<input id=inputPic name='pic' type='file' accept='image/*'>
<button onclick='uploadPic(\"inputPic\");'>Save</button>

用于在客户端上载的javascript:

    function uploadPic(inputId){
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "...uploadImage");
        var data = new FormData();
        data.append("file", document.getElementById(inputId).files[0]);
        xhr.send(data);
    }

用于在服务器端处理上传请求的Java:

    @POST
    @Path("{key}/uploadImage")
    public void upload(@PathParam("key") String key, String data) {
        uploadImage(key, data);
    }

    public void uploadImage(String name, String data){
        try{
            byte[] bytes = data.getBytes();
            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("..."+name+".png")));
            stream.write(bytes);
            stream.flush();
            stream.close();

        }
        catch(Exception e){
            System.out.println("Error while uploading image");
            e.printStackTrace();
        }
    }

没有任何错误。该文件在服务器上创建,但文件已损坏。有什么想法可以解决这个问题吗?

编辑:

我认为我正在接近解决方案。好像我必须更改字符集,因为它看起来像

“。PNG IHDR .... a.bKGD ..... pHYs.tIME。&-。IDATx.y ..?Vo。] wA。 B��...“

代替

“‰PNG IHDR€€Ã>aËbKGD½½½½” pHYsšœtIMEâ &-££IDATxÚíy〜“Õï?ïVoíÕ] ½wA³µ€Bƒ€” j *âƒ7...“。

我只是不知道我实际上需要使用哪个字符集。

编辑:

好吧...不只是字符集。

编辑:

开始工作。我在客户端使用了readAsDataURL将在服务器端编码和解码的数据发送到文件中!

0 个答案:

没有答案