• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何使springboot上传文件

springboot 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

由于对高大上的前端处理不太熟悉,想直接通过MVC的方式进行内容传递,因此选用了Thymeleaf模版处理向前端传值的问题。

  1. application.properties文件

#访问超市时间的设置ribbon.ConnectTimeout=60000ribbon.ReadTimeout=60000# 开启多文件上传spring.servlet.multipart.enabled=true spring.servlet.multipart.file-size-threshold =0#单个文件大小#spring.http.multipart.maxFileSize=10MB#设置总上传的数据大小#spring.http.multipart.maxRequestSize=10MB#升级到2.0后需要改成#单个文件大小spring.servlet.multipart.max-file-size=10Mb #设置总上传的数据大小 spring.servlet.multipart.max-request-size=10Mb#上传路径upload_path=D:/file_statics#下载路径download_path=D:/file_statics

2.controller代码

import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.mvc.support.RedirectAttributes;import com.vinord.common.model.ResultView;import com.vinord.common.util.Constains;@RestControllerpublic class FileUploadController{    @Value("${upload_path}")    private final String upload_path ="D:/file_statics";    @Value("${download_path}")    private final String download_path ="D:/file_statics";    /**     * 单个文件上传     * @param file     * @param redirectAttributes     * @return     */    @RequestMapping("uploadFile")    public ResultView singleFileUpload(@RequestParam("file")     MultipartFile file,RedirectAttributes redirectAttributes) {        ResultView result = new ResultView();        if (file.isEmpty()) {            redirectAttributes.addFlashAttribute("message", "请选择文件进行上传");            result.setCode(Constains.STATUS_ZE<div>本文来源gaodai.ma#com搞##代!^码@网3</div>RO);            result.setMsg("请选择文件进行上传!");            return result;        }        try {            byte[] bytes = file.getBytes();            String filename = file.getOriginalFilename();            String name = filename.substring(0,filename.lastIndexOf("."));            String formatDate = System.currentTimeMillis()+"";            int index = filename.indexOf(".");            String savefilename = name + formatDate+ filename.substring(index);            Path path = Paths.get(upload_path+ File.separator+savefilename);            Files.write(path, bytes);            redirectAttributes.addFlashAttribute("message","成功上传文件: '" + file.getOriginalFilename() + "'");            result.setCode(Constains.STATUS_ONE);            result.setMsg("上传成功");        } catch (IOException e) {            e.printStackTrace();        }        return result;    }    /**     * 多个文件上传     * @param files     * @return     */    @ResponseBody    @RequestMapping(value = "/upload/batch", method = RequestMethod.POST)    public ResultView batchUpload(@RequestParam("files")MultipartFile[] files) {        ResultView result = new ResultView();        String uploadedFileName = Arrays.stream(files).map(x -> x.getOriginalFilename())                        .filter(x -> !StringUtils.isEmpty(x)).collect(Collectors.joining(" , "));        if (StringUtils.isEmpty(uploadedFileName)) {            result.setCode(Constains.STATUS_ZERO);            result.setMsg("文件上传失败,文件为空!");            return result;        }        try {            saveUploadedFiles(Arrays.asList(files));        } catch (IOException e) {            result.setCode(Constains.STATUS_ZERO);            result.setMsg("文件上传异常"+e.getMessage());            return result;        }        result.setCode(Constains.STATUS_ONE);        result.setMsg("上传成功");        return result;    }    private  void saveUploadedFiles(List<MultipartFile> files) throws IOException {        for (MultipartFile file : files) {            if (file.isEmpty()) {                continue;            }            byte[] bytes = file.getBytes();            String filename = file.getOriginalFilename();            String name = filename.substring(0,filename.lastIndexOf("."));            String formatDate = System.currentTimeMillis()+"";            int index = filename.indexOf(".");            String savefilename = name + formatDate+ filename.substring(index);            Path path = Paths.get(upload_path+ File.separator+ savefilename);            Files.write(path, bytes);        }    }    /**     * 下载     * @param res     * @throws IOException     */    @RequestMapping("download")      public void download(HttpServletResponse res) throws IOException {        String fileName = "CustomLogControl1536898060373.java";        res.setHeader("content-type", "application/octet-stream");        res.setContentType("application/octet-stream");        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(new File(download_path+ File.separator+fileName)));            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();                }            }        }    }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使springboot上传文件
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址