zoukankan      html  css  js  c++  java
  • 使用Springmvc实现文件上传

    @RequestMapping(value="/userfilesDownload/{fileId}")
    	public ResponseEntity<byte[]> UserfilesDownload(@RequestParam("file")String file,@PathVariable String fileId,HttpServletRequest request,HttpServletResponse response)throws IOException{
    		//获得所有请求的路径
    		String filepath = request.getServletContext().getRealPath("/");
    		File newfile=null;
    		HttpHeaders headers=null;
    		try{
    //filepath+File.separator+file拼接访问路径 ——多出来了一个/crpies
    		newfile=new File(filepath+File.separator+file);
    //转码  防止文件名乱码
    		String filename1=new String(filepath.getBytes("utf-8"),"ISO-8859-1");
    		headers=new HttpHeaders();
    		//格式化文件
    		headers.setContentDispositionFormData("attachment", filename1);
    		//用二进制流来下载地址
    		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    		}catch(Exception e){
    			throw new RuntimeException(e);
    		}
    		return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(newfile),headers, HttpStatus.OK); 
    	}
    

    文件下载

    List<Enclosure> fileList=enclosureService.getListByFileIds(fileId);
    		String fileDownUrl="";
    		String filename="";
    		for (Enclosure enclosure : fileList) {
    			fileDownUrl=enclosure.getDownloadPath();
    			filename=enclosure.getName();
    		}
    		File file = new File(Global.getUserfilesBaseDir() + Global.USERFILES_BASE_URL + fileDownUrl);
    		if (file.exists()) {
                resp.setContentType("application/force-download");// 设置强制下载不打开
                resp.addHeader("Content-Disposition",
                        "attachment;fileName=" + filename);// 设置文件名
                byte[] buffer = new byte[1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = resp.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                } 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();
                        }
                    }
                }
            } 
    

      

  • 相关阅读:
    双缓冲绘图模式
    java异常
    15-11-24 system同步与异步
    15-11-23:system指令
    使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
    JTextArea 加入滚动条
    键盘事件
    monitoring_db
    del_archivelog
    Redis 4.0.14 单实例安装
  • 原文地址:https://www.cnblogs.com/5858y/p/12817464.html
Copyright © 2011-2022 走看看