SprintBoot 文件上传

1.单文件上传。

STS直接新建基于springboot web的项目,然后新建一个FileUploadController.java类用于写upload上传接口逻辑和upload.html上传页面

 

 

 

上代码:

FileUploadController.java

package com.example.demo.controller;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class FileUploadController {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    
    @PostMapping("/upload")
    public String upload(MultipartFile uploadFile, HttpServletRequest req) {
        String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
        System.out.print("realPath===>"+realPath);
        String format = sdf.format(new Date());
        File folder = new File(realPath + format);
        if(!folder.isDirectory()) {
            folder.mkdirs();
        }
        String oldName = uploadFile.getOriginalFilename();
        String newName = UUID.randomUUID().toString() + oldName.substring(oldName.indexOf('.'), oldName.length());
        try {
            uploadFile.transferTo(new File(folder, newName));
            String filePath = req.getScheme() + "://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+format+"/"+newName;
            return filePath;
        }catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return "上传失败!";
    }
}

 

upload.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>UpdateFileDemo</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" value="请选择文件" />
<input type="submit" value="上传" />
</form>
</body>
</html>

 

编译运行,浏览器输入 localhost:8080/upload.html 查看效果:

 

 选择文件,点击上传按钮

 

 

 

 

看,上传成功了。直接把图片地址复制到浏览器上,可以直接看到我们刚才上传的图片。

 

 OK,上传单文件大功告成~

springboot上传默认有大小限制,如果我们要上传大文件,怎么办呢?

很简单,我们需要在项目配置文件中添加:

spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB

注意:这两句都必须同时添加,不然上传大小设置无效,这时我们就能够上传大文件了。

 

2.多文件上传

多文件上传之需要修改两处代码:

(1)在上传页面upload.html中的<input type="file" 中添加属性multiple。

(2)修改控制器,代码如下:

@PoseMapping("/uploads")
public String uplod(MultipartFile[] uploadFiles, HttpServletRequest req){
   //遍历uploadFiles数组分别存储
}            

控制器里边的核心逻辑和单文件上传是一样的,只是多一个遍历的步骤。

 

posted on 2020-03-16 21:40  atomgame的记事本  阅读(167)  评论(0)    收藏  举报

导航