在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 一個(gè)關(guān)于SpringMVC實(shí)現(xiàn)文件下載的問題(下載文件與源文件內(nèi)容不符)

一個(gè)關(guān)于SpringMVC實(shí)現(xiàn)文件下載的問題(下載文件與源文件內(nèi)容不符)

本來需要實(shí)現(xiàn)一個(gè)下載壓縮文件的功能的,可是下載下來的壓縮文件里卻沒有內(nèi)容,所以我直接改為絕對路徑,并改為其他文件(如圖片,txt文本),結(jié)果下載下來的內(nèi)容根本就與源文件內(nèi)容不同

    @RequestMapping("/test")
    public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException {
        File file = new File("E:\\壁紙\\新建文本文檔.txt");
        byte[] body = null;
        InputStream is = new FileInputStream(file);
        body = new byte[is.available()];
        is.read(body);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Disposition", "attchement;filename=" + file.getName());
        HttpStatus statusCode = HttpStatus.OK;
        ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
        return entity;
    }

源下載文件

clipboard.png

下載之后的文件內(nèi)容

clipboard.png

這是我下載壓縮文件的代碼,下載其他文件的結(jié)果也是跟上面一樣

// 節(jié)目單保存地址
    @Value("${task.savePath}")
    private String baseSavePath;

    @RequestMapping(value = "/download_task")
    public ResponseEntity<byte[]> downloadTask(@RequestParam("taskId")Long taskId, HttpServletRequest request, Model model) throws IOException {

        if (taskId == null || !CommonUtils.isIntThanZero(taskId.intValue())) {
            return null;
        }

        // tomcat tmp 文件夾路徑
        String savePath = System.getProperty("java.io.tmpdir");
        // 壓縮節(jié)目單文件
        String fileName = manaProgramTaskService.zipTask(taskId, savePath);

        File file = new File(savePath + "/" + fileName);

        HttpHeaders headers = new HttpHeaders();
        //下載顯示的文件名,解決中文名稱亂碼問題
        String downloadFielName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");

        headers.setContentDispositionFormData("attachment", downloadFielName);
        //application/octet-stream : 二進(jìn)制流數(shù)據(jù)(最常見的文件下載)。
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
    }
回答
編輯回答
護(hù)她命
2017年12月27日 03:03