java 下载文件的两种方式

一:以网络的方式下载文件public HttpServletResponse fileDownload(@ApiParam(value = "文件ID",required=true) @RequestParam(required = true)String fileID,                                               @ApiParam(value = "文件名",required=true) @RequestParam(required = true) String fileName,

                                               HttpServletResponse response) throws IOException{
        try {
            String path = fileDir+uploadedPath+File.separator+fileID;
            // path是指欲下载的文件的路径。
            File file = new File(path);
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    }

二:下载本地文件

public ReturnResponse<String> fileDownload(@ApiParam(value = "文件ID",required=true) @RequestParam(required = true)String fileID,
                                               @ApiParam(value = "文件名",required=true) @RequestParam(required = true) String fileName,
                                               HttpServletResponse response) throws IOException{
        File outFile = new File(fileDir+uploadedPath+ File.separator+fileID);
        if(!outFile.exists()){
            return new ReturnResponse<String>(0, "FAILURE","文件不存在");
        }
        OutputStream outputStream = null;
        try {
            response.setContentType("application/x-download");
            response.addHeader("Content-Disposition", "attachment;filename="+fileName);
            outputStream = response.getOutputStream();

            byte[] filebytes = org.apache.commons.io.FileUtils.readFileToByteArray(outFile);
            outputStream.write(filebytes);
            outputStream.flush();

            return new ReturnResponse<String>(0, "SUCCESS","");
        } catch (IOException e) {
            e.printStackTrace();
            return new ReturnResponse<String>(0, "FAILURE","读取文件失败");
        }finally{
            if(outputStream!=null){
                outputStream.close();
            }
        }
    }

猜你喜欢

转载自www.cnblogs.com/bestxyl/p/9066711.html