• SpringMVC用户请求下载文件


    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.talkweb.dao.FILE_RECORDMapper;
    import com.talkweb.po.FILE_RECORD;
    
    
    @Controller
    public class DownloadFileController {
        
        private static Logger logger = Logger.getLogger(DownloadFileController.class);
        
        @Autowired
        FILE_RECORDMapper fILE_RECORDMapper;
        
        
        @RequestMapping(value = "/downloadFile")
        public ResponseEntity<byte[]> downloadFile(Long D_file_id,HttpServletRequest request) {
            try {
                logger.info("文件下载接口被调用,接收到参数:[D_file_id:" + D_file_id + "]");
                FILE_RECORD fILE_RECORD = fILE_RECORDMapper.selectByPrimaryKey(D_file_id);
                String sFilePath  = fILE_RECORD.getsFilePath();
                String sFileName = fILE_RECORD.getsFileName();
                String rFileName = fILE_RECORD.getrFileName();
                String fullFilePath = sFilePath+sFileName;
                
                InputStream in=new FileInputStream(new File(fullFilePath));//将该文件加入到输入流之中
                byte[] body=null;
                 body=new byte[in.available()];// 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数
                 in.read(body);//读入到输入流里面
                
                 rFileName=new String(rFileName.getBytes("gbk"),"iso8859-1");//防止中文乱码
                HttpHeaders headers=new HttpHeaders();//设置响应头
                headers.add("Content-Disposition", "attachment;filename="+rFileName);
                HttpStatus statusCode = HttpStatus.OK;//设置响应吗
                ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
                return response;
                
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                logger.error("文件下载异常:"+e.toString());
            }
            logger.error("文件下载异常,未知原因");
            return null;
        }
        
    }
  • 相关阅读:
    09.Java数据算法
    08.Java反射问题
    07.Java类加载问题
    占位
    占位
    占位
    占位
    HTML与CSS粗浅摘要
    JavaScript(4):模态对话框、隐藏二级菜单及多选框的实现
    JavaScript(3):DOM选择器
  • 原文地址:https://www.cnblogs.com/RivenLw/p/10341908.html
Copyright © 2020-2023  润新知