zoukankan      html  css  js  c++  java
  • springmvc实现上传和下载

    非常简单的小例子,注释的很清楚。话不多少,看代码

    FileController.java
    package com.imooc;
    
    import org.apache.commons.io.IOUtils;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Date;
    
    /**
     * Created by 敲代码的卡卡罗特
     * on 2018/4/15 16:52.
     */
    @RequestMapping("/file")
    @Controller
    public class FileController {
        private String folder="E://update";
        @PostMapping
        public void upload(MultipartFile file) throws Exception {
    
            System.out.println(file.getName());  //file  就是你前台传过来的参数名字
            System.out.println(file.getOriginalFilename());  //idea快捷键.txt  就是你文件的实际名字
            System.out.println(file.getSize()); //文件的大小
    
            //这里只是一个小demo,按理说应该截取传过来的后缀的,这里写死了。
            File localFile = new File(folder, new Date().getTime() + ".txt");
            //复制到这个文件中
            file.transferTo(localFile);
        }
    
        @GetMapping("/{id}")
        public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) throws Exception {
            //这个是jdk1.7的新用法,把流写在try的括号里面,就不用最后关闭流了。帮你做了
            try (InputStream inputStream = new FileInputStream(new File(folder, id + ".txt"));
                 OutputStream outputStream = response.getOutputStream();) {
                //设置信息头
                response.setContentType("application/x-download");
                response.addHeader("Content-Disposition", "attachment;filename=test.txt");//filename 就是你下载到本地的名字
    
                //意思是把输入流复制到输出流中
                IOUtils.copy(inputStream, outputStream);
                outputStream.flush();
            }
    
        }
    }
    View Code

    解决中文文件名————问题

     String name = URLEncoder.encode(file.getFilename(), "utf-8")
    依赖看引入的包。就不写了。
  • 相关阅读:
    jQuery_03之事件、动画、类数组操作
    jQuery_02之元素操作及事件绑定
    jQuery_01之选择器
    DOM_06之定时器、事件、cookie
    DOM_05之DOM、BOM常用对象
    DOM_04之常用对象及BOM
    DOM_03之元素及常用对象
    DOM_02之查找及元素操作
    了解bootstrap导航条
    学习Angularjs-day1-总结
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8848320.html
Copyright © 2011-2022 走看看