• SpringBoot环境下java实现文件的下载


    思路:文件下载,就是给服务器上的文件创建输入流,客户端创建输出流,将文件读出,读入到客户端的输出流中,(流与流的转换)

    package com.cst.icode.controller;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.cst.util.file.Files;
    import com.cst.util.file.Files.CstDir;
    
    
    @RestController
    @RequestMapping("/file")
    public class TestController {
    	
    	@GetMapping("/froalar/get/{path}")
    	public Object getFroalarFile(@PathVariable String path,HttpServletResponse re) {
    		path=path.replace(":", File.separator);
    		// 平台的下载文件根路径
    		File uploadRoot = Files.getDir(CstDir.upload);//=后面是要获得下载的文件的路径
    		File downloadDir = new File(uploadRoot,  File.separator+path);
    		return downloadFile(downloadDir,re);
    	}
    	private OutputStream downloadFile(File file,HttpServletResponse re) {
    		if (file.exists()) {
                byte[] buffer = new byte[1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    int i = bis.read(buffer);
                    OutputStream os = re.getOutputStream();
                    while (i != -1) {
                    	os.write(buffer,0,i);
                        i = bis.read(buffer);
                    }
                    return os;
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
    		return null;
    	}
    
    }
    

      

  • 相关阅读:
    设置VS&IE8控件调试
    VR模型优化技巧
    MFC的资源切换AFX_MANAGE_STATE (转载)
    3D图形学资源收集
    关于C++运算符重载
    Valve(维尔福软件公司) Half Life(半条命) CS(反恐精英)
    MySQL导入SQL文件及常用命令
    折磨了我3天的IIS服务器不能运行asp页面故障
    3721奇遇
    SMS2.0软件测量及出现的故障
  • 原文地址:https://www.cnblogs.com/chcha1/p/11313677.html
Copyright © 2020-2023  润新知