ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java:使用JavaScript上传图片 – 文件已损坏,损坏或过大

2019-07-01 15:32:42  阅读:221  来源: 互联网

标签:java javascript spring image-uploading corrupt-data


嘿伙计我需要解释我的代码有什么问题!但首先我要说的是,我不是春天的专家,也不是用Java上传文件……
我使用Spring Boot作为后端服务器,我有一个JavaScript前端.
为了在前端和后端之间发送数据,我使用的是Axios library,它通常工作得非常好.

问题:
图像在(Chrome)浏览器控制台中如下所示:
Console output
这是一个非常长的字母数字字符串,这是我使用以下代码发送到服务器的内容:

static uploadFiles(files) {
    const data = new FormData();

    Object.keys(files).forEach(key => {
        data.append("files", new Blob([files[key]], { type: 'image/jpeg' }));
    });

    const url = API_URL + "uploadFiles";
    return axios.post(url, data, RestServices.getAuth({
        "Content-Type": "multipart/form-data;boundary=gc0p4Jq0M2Yt08jU534c0p"
    }));
}

我不知道边界的东西是什么,但它在后端接收文件… …

在后端(spring)方面,我成功收到了一个MultipartFiles数组:

@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST)
@ResponseBody
public boolean uploadFiles(HttpServletRequest request, @RequestParam("files") MultipartFile[] files) throws IOException {
    String filePath = Thread.currentThread().getContextClassLoader().getResource("assets/images/").getFile();
    InputStream inputStream;
    OutputStream outputStream;
    for(MultipartFile file : files) {
        File newFile = new File(filePath + file.getOriginalFilename() + ".jpg");
        inputStream = file.getInputStream();

        if (!newFile.exists() && newFile.createNewFile()) {
            outputStream = new FileOutputStream(newFile);
            int read;
            byte[] bytes = new byte[1024];

            while ((read = inputStream.read(bytes)) != -1) {
                outputStream.write(bytes, 0, read);
            }
        }
        System.out.println(newFile.getAbsolutePath());
    }
    return true;
}

我也尝试过它file.transferTo(newFile);而不是输入和输出流 – 这也不起作用.
之后,我得到以下输出,这意味着图像已成功保存:
/path/to/blob.jpg
如果我检查文件上传的路径,有一个名为blob.jpg的文件,但如果我打开它,windows photo viewer会出现以下问题:
Error in windows photo viewer
我用记事本上传前后打开了图像:
上传前:
Image before upload (Byte Array)
我认为这是一个字节数组,但如果我在上传后打开图像,我会得到浏览器的输出.这意味着它没有被转换为字节数组(如果我错了就纠正我),我相信这就是为什么它是一个腐败的图像……

我的问题是:

>问题是什么?
>我该如何解决?

我真的尝试了所有想到的东西,但我没有想法.

谢谢你的帮助!

标签:java,javascript,spring,image-uploading,corrupt-data
来源: https://codeday.me/bug/20190701/1348406.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有