下载的文件已损坏-Error解释JPEG图像文件(不是JPEG文件:以0xef 0xbf开头)

时间:2017-05-29 13:23:25

标签: javascript angularjs rest spring-boot download

我必须尝试下载文件,这些文件位于我们的系统中。我使用了弹簧启动和角度js 1。 文件已下载,但未打开消息错误解释JPEG图像文件(不是JPEG文件:以0xef 0xbf开头)。 我的示例代码是 -

list = [[1,2,3],[4,5],[6],[0]]
dict = {0: 6, 1: 6, 2: 2, 3: 13, 4: 12, 5: 11, 6: 10}

new_list = map(sum, [[dict[b] for b in i] for i in list]) #for Python 2

new_list = list(map(sum, [[dict[b] for b in i] for i in list])) #for Python 3

从此文件下载但它已损坏意味着我的原始文件大小为18,394字节且response.byteLength = 33496。

更新

相同的代码适用于文本文件,但对于二进制文件,它不起作用。

如何下​​载正确的文件..

1 个答案:

答案 0 :(得分:0)

String filePath =(" /home/ashish/Desktop/CTA.jpg"); 文件路径是我认为的问题,并确保文件存在

 @GetMapping("/downloadFile")
public void doima(HttpServletResponse response) throws IOException {
    String filePath = ("\\home\\ashish\\Desktop\\CTA.jpg");
    File fileName = new File(filePath);     
    String mimeType = URLConnection.guessContentTypeFromName(fileName.getName());
    System.out.println(mimeType);
    if (mimeType == null) {
        System.out.println("mimetype is not detectable, will take default");
        mimeType = "application/octet-stream";
    }
    response.setContentType(mimeType);
    response.setHeader("Content-Disposition", String.format("inline; filename=\"" + fileName.getName() + "\""));
    response.setContentLength((int) fileName.length());
    InputStream inputStream;
    try {
        inputStream = new BufferedInputStream(new FileInputStream(fileName));
        FileCopyUtils.copy(inputStream, response.getOutputStream());
        inputStream.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

CTA.jpg存在于您的资源路径中,然后您可以尝试 如下所示

 InputStream in = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("CTA.png");