博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot文件上传与下载
阅读量:6282 次
发布时间:2019-06-22

本文共 4108 字,大约阅读时间需要 13 分钟。

一、创建简单的springboot-web项目

二、文件上传属性配置

#默认支持文件上传spring.http.multipart.enabled =truespring.http.multipart.file-size-threshold =0# 上传文件的临时目录#spring.http.multipart.location=E:/upload/temp/# 最大支持文件大小spring.http.multipart.max-file-size =100MB# 最大支持请求大小spring.http.multipart.max-request-size =100Mb

三、文件上传代码

1.Controller层代码:

@RestControllerpublic class UploadController {    private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class);    @GetMapping("/toUpload")    public String upload() {        return "upload";    }    @PostMapping("/upload")    public String UploadFile(@RequestParam("file") MultipartFile file) {        if (file.isEmpty()) {            return "请选择文件";        }   //获取文件名        String fileName = file.getOriginalFilename();        String filePath = "C:/Users/upload/";        File dest = new File(filePath + fileName);        try {            file.transferTo(dest);            LOGGER.info("上传成功");            return "上传成功";        } catch (IOException e) {            LOGGER.error(e.toString(), e);        }        return "上传失败!";    }}

2.jsp代码

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>    
单文件上传

四、文件下载代码

@RequestMapping(value = "/download", method = RequestMethod.GET)    @ResponseBody    public String testDownload(HttpServletResponse res,HttpServletRequest request) {        String fileName = "xxx.txt";        String filePath = "D:/uploadFile";        File file = new File(filePath + "/" + fileName);        System.out.println(file);        if (file.exists()){//判断文件是否存在            //判断浏览器是否为火狐            try {                if ("FF".equals(getBrowser(request))) {                    // 火狐浏览器 设置编码new String(realName.getBytes("GB2312"), "ISO-8859-1");                    fileName = new String(fileName.getBytes("GB2312"), "ISO-8859-1");                }else{                    fileName = URLEncoder.encode(fileName, "UTF-8");//encode编码UTF-8 解决大多数中文乱码                    fileName = fileName.replace("+", "%20");//encode后替换空格  解决空格问题                }            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            res.setContentType("application/force-download");//设置强制下载            res.setHeader("Content-Disposition", "attachment;filename=" + fileName);//设置文件名            byte[] buff = new byte[1024];// 用来存储每次读取到的字节数组            //创建输入流(读文件)输出流(写文件)            BufferedInputStream bis = null;            OutputStream os = null;            try {                os = res.getOutputStream();                bis = new BufferedInputStream(new FileInputStream(file));                int i = bis.read(buff);                while (i != -1) {                    os.write(buff, 0, buff.length);                    os.flush();                    i = bis.read(buff);                }            } catch (IOException e) {                e.printStackTrace();            } finally {                if (bis != null) {                    try {                        bis.close();                    } catch (IOException e) {                        e.printStackTrace();                    }                }                if (os != null){                    try {                        os.close();                    } catch (IOException e) {                        e.printStackTrace();                    }                }            }        }else {            return "文件不存在!!!";        }        return "download success";    }     /**     * @Title: getBrowser     * @Description: 判断客户端浏览器     * @return String     * @author     * @date     */    private static String getBrowser(HttpServletRequest request) {        String UserAgent = request.getHeader("USER-AGENT").toLowerCase();        if (UserAgent != null) {            if (UserAgent.indexOf("msie") != -1)                return "IE";            if (UserAgent.indexOf("firefox") != -1)                return "FF";            if (UserAgent.indexOf("safari") != -1)                return "SF";        }        return null;    }}

五、测试

 

转载于:https://www.cnblogs.com/sueyyyy/p/10509461.html

你可能感兴趣的文章
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>