首页 > 解决方案 > 将上传的图像文件保存在服务器上 - Java

问题描述

我试图让用户将图像上传到服务器。它几乎在做它应该做的事情,但是服务器上的文件被破坏了。

<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..时间.&-..IDATx.y..?.Vo.].wA..B. ……”

代替

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

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

编辑:

好的......它不是/不仅仅是字符集。

编辑:

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

标签: javafile-uploadimage-uploading

解决方案


推荐阅读