接收文件
@PostMappingpublic result<String> add(MultipartFile file) throws IOException {// 得到目标文件夹File directory = new File("file");//如果文件夹不存在就创建if(!directory.exists()){directory.mkdirs();}//文件名称String fileName = file.getOriginalFilename();//得到文件的存放路径 ---directory.getCanonicalPath() 文件夹全路径 --- File.separator:分隔符String filePath = directory.getCanonicalPath() + File.separator + fileName; // 创建新文件对象,指定文件路径为新路径File desc = new File(filePath);// 将前端发过来的文件输送给新文件 完成存入file.transferTo(desc);return result.success("success");}
发送文件
@GetMapping("/{url}")public void pdf(@PathVariable String url, HttpServletResponse response) throws IOException {//文件所在文件夹File directory = new File("file");//文件路径String filePath = directory.getCanonicalPath() + File.separator + url;try {fileName = URLEncoder.encode(fileName, "UTF-8");//StringBuilder().append拼接字符串性能更高String header = new StringBuilder().append("attachment;filename=").append(fileName).toString();//响应的内容类型为"application/octet-stream",这是一种通用的二进制数据格式。response.setContentType("application/octet-stream");// content-type 指示响应内容的格式
//
// content-disposition 指示如何处理响应内容。
//
// 一般有两种方式:
//
// inline:直接在页面显示
// attchment:以附件形式下载response.addHeader("Content-disposition", header);//响应内容不会被压缩传输,而是直接发送给客户端。response.addHeader("Transfer-Encoding", null);//表示在响应完成后,连接将被立即关闭,不再进行后续的数据交换。response.addHeader("connection", "close");} catch (UnsupportedEncodingException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}//得到文件File file = new File(filePath);FileInputStream in = null;OutputStream out = null;try {//读取文件in = new FileInputStream(file1);out = response.getOutputStream();IOUtils.copy(in, out);out.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {IOUtils.closeQuietly(out);IOUtils.closeQuietly(in);}}