springboot文件上传

springboot文件上传

配置application.properties文件

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=3MB

一、单个文件上传

1.java代码
 //获取当前时间,目的是作为一个文件夹
    String format = new SimpleDateFormat("/yyyy-MM-dd/").format(new Date());

@RequestMapping("/upload")
public String getFile() {
    return "upLoad";
}

@PostMapping("/upload")
@ResponseBody
public String upload(MultipartFile file, HttpServletRequest request) {
    try {
        return fileUpLoad(file, request);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "上传失败";
}

  private String fileUpLoad(MultipartFile file, HttpServletRequest request) throws IOException {
        //获取文件的保存路径
        String path = request.getServletContext().getRealPath("/img") + format;
        System.out.println("path = " + path);
        //判断文件是否存在,不存在就创建
        File folder = new File(path);
        if (!folder.exists()) {
            folder.mkdirs();
        }
        //获取源文件上传的文件名
        String originalFilename = file.getOriginalFilename();
        //截取上传文件后的文件格式并与UUID生成的ID组合成新的文件名
        String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf('.'));
        //将组成的文件路径+文件名写入本地内存中
        file.transferTo(new File(folder, newFileName));
        //返回上传文件的服务器地址
        String fileServeInfo = request.getScheme() + "://" + request.getServerName() + ":" +
                request.getServerPort() + request.getContextPath() +
                "/img" + format + newFileName;
        System.out.println("fileServeInfo = " + fileServeInfo);
        return fileServeInfo;
    }
2.html代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <title>文件上传</title>
</head>
<body>
<form method="post" action="/manyupload" enctype="multipart/form-data">
    <input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

二、多个文件上传

1.java代码
//@RequestMapping("/manyupload")
    public String getFile() {
        return "upLoad";
    }
/**
 * 多个文件上传,使用一个可变长数组来确定客户端上传过来的文件个数,如果没有上传,返回空信息
 * 这段代码也适合单文件上传
 * @param files
 * @return
 */
@PostMapping("/manyupload")
@ResponseBody
public String manyUpload(HttpServletRequest request, @RequestParam("username") String username, @RequestParam(name = "file") MultipartFile... files) {
    //将传过来的文件转为一个集合
    List<MultipartFile> multipartFiles = Arrays.asList(files);
    //创建一个新的MultipartFile 来保存上传的文件不是为空字符串的文件
    ArrayList<MultipartFile> newMultiPartFiles = new ArrayList<>();
    for (int i = 0; i < multipartFiles.size(); i++) {
        //如果为空就不需要在下面再进行遍历上传了
        if (!multipartFiles.get(i).getOriginalFilename().equals("")){
            newMultiPartFiles.add(multipartFiles.get(i));
        }
    }
    System.out.println(username);
    //获取文件保存位置
    String realpath = request.getServletContext().getRealPath("/" + username + "file") + format;
    System.out.println("realpath = " + realpath);
    //创建文件夹
    File folder = new File(realpath);
    if (!folder.exists()) {
        folder.mkdirs();
    }
    if(newMultiPartFiles.size()>0){
        int newMultiPartFilesSize = newMultiPartFiles.size();
        for (int i = 0; i < newMultiPartFilesSize; i++) {
            //获取源文件名字
            String originalFilename = newMultiPartFiles.get(i).getOriginalFilename();
            //获取文件夹的名字并截取下来组合为新的文件名
            String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf('.'));
            try {
                multipartFiles.get(i).transferTo(new File(folder, newFileName));
                //返回上传文件的服务器地址
                String fileServeInfo = request.getScheme() + "://" + request.getServerName() + ":" +
                        request.getServerPort() + request.getContextPath() +
                        "/" + username + "file" + format + newFileName;
                System.out.println(fileServeInfo);
            } catch (IOException e) {
                e.printStackTrace();
                return "第" + (i + 1 )+ "份文件上传失败";
            }
            System.out.println((i + 1 )+ "份文件上传成功");
        }
        return "上传成功";
    }else {
        return "请选择上传的文件";
    }
}
2.html代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <title>文件上传</title>
</head>
<body>
<form method="post" action="/manyupload" enctype="multipart/form-data">
    <input type="text" name="username"><br>
    <input type="file" name="file"><br>
    <input type="file" name="file"><br>
    <input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值