Rumah > Java > javaTutorial > Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot

Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot

WBOY
Lepaskan: 2023-05-17 12:15:36
ke hadapan
1658 orang telah melayarinya

1. Contoh aplikasi

Keperluan: Tunjukkan Spring-Boot untuk mendaftarkan pengguna melalui borang dan menyokong muat naik gambar

2. Pelaksanaan kod

Pelaksanaan kod - muat naik fail

Sila buat templat/upload.html, pastikan hanya satu avatar boleh dipilih dan haiwan peliharaan boleh memuat naik berbilang gambar

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>upload</title>
</head>
<body bgcolor="#CED3FE">
<img  src="images/1.GIF"/ alt="Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot" >
<hr/>
<div >
    <h2>注册用户~</h2>
    <form action="#" th:action="@{/upload}" method="post" enctype="multipart/form-data">
        用户名:<input type="text"  name="name"/><br/><br/>
        电 邮:<input type="text"  name="email"/><br/><br/>
        年 龄:<input type="text"  name="age"/><br/><br/>
        职 位:<input type="text"  name="job"/><br/><br/>
        头 像:<input type="file"  name="header"><br/><br/>
        宠 物:<input type="file"  name="photos" multiple><br/><br/>
        <input type="submit" value="注册"/>
        <input type="reset" value="重新填写"/>
    </form>
</div>
<hr/>
</body>
</html>
Salin selepas log masuk

2 Cipta srcmainjavacomllpspringbootcontrollerUploadController.java

@Slf4j
@Controller
public class UploadController {
    //处理转发到用户注册-可以完成文件上传页面
    @GetMapping("/upload.html")
    public String uploadPage() {
        return "upload";// 视图解析,转发到templates/upload.html
    }
    @PostMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("name") String name,
                         @RequestParam("email") String email,
                         @RequestParam("age") Integer age,
                         @RequestParam("job") String job,
                         @RequestParam("header") MultipartFile header,
                         @RequestParam("photos") MultipartFile[] photos) throws IOException {
        log.info("name:{},email:{},age:{},job:{},header.size:{},photos.length:{}",name,email,age,job,header.getSize(),photos.length);
        //1.获取源文件名称
        String originalFilename = header.getOriginalFilename();
        // /E:/IdeaProjects/springboot-sysuser/target/classes/
        String path = ResourceUtils.getURL("classpath:").getPath();
        System.out.println(path);
        File file = new File(path+"static/images/upload/");
        if(!file.exists()){
            file.mkdirs();
        }
        header.transferTo(new File(path+"static/images/upload/"+originalFilename));
        return "注册用户成功/文件上传成功";
    }
}
Salin selepas log masuk

Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot

Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot

3. Dua soalan timbul

1. Apabila dua fail berbeza mempunyai nama fail yang sama, akan ada masalah menimpa fail Bagaimana untuk menyelesaikannya?

@PostMapping("/upload")
@ResponseBody
public String upload(@RequestParam("name") String name,
                     @RequestParam("email") String email,
                     @RequestParam("age") Integer age,
                     @RequestParam("job") String job,
                     @RequestParam("header") MultipartFile header,
                     @RequestParam("photos") MultipartFile[] photos) throws IOException {
    log.info("name:{},email:{},age:{},job:{},header.size:{},photos.length:{}",name,email,age,job,header.getSize(),photos.length);
    //1.获取源文件名称
    String originalFilename = header.getOriginalFilename();
    originalFilename = UUID.randomUUID().toString().replaceAll("-","")+System.nanoTime()+originalFilename;
    //2.获取文件上传的路径
    // /E:/IdeaProjects/springboot-sysuser/target/classes/
    String path = ResourceUtils.getURL("classpath:").getPath();
    System.out.println(path);
    //3.动态的创建文件上传目录
    File file = new File(path+"static/images/upload/");
    if(!file.exists()){
        file.mkdirs();
    }
    //4.将文件传输到目标目录
    header.transferTo(new File(path+"static/images/upload/"+originalFilename));
    return "注册用户成功/文件上传成功";
}
Salin selepas log masuk

, ideanya adalah untuk menetapkan semula nama fail yang unik kepada fail yang dimuat naik

originalFilename = UUID.randomUUID().toString().replaceAll("-","")+System.nanoTime()+originalFilename;

Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot 2. Muat naik semua fail ke direktori Seterusnya, apabila memuat naik banyak fail, mengakses fail akan menjadi perlahan

Penyelesaian: Muat naik fail ke direktori yang berbeza Contohnya, fail yang dimuat naik dalam satu hari hendaklah dimasukkan ke dalam satu folder tahun/bulan/hari, seperti 2022. / 11/11 Daftar Kandungan

public class WebUtils {
    //定义一个文件上传的路径
    public static String  UPLOAD_FILE_DIRECTORY = "static/images/upload/";
    //编写方法,生成一个目录-根据当前日期 年/月/日
    public static String getUploadFileDirectory() {
        return UPLOAD_FILE_DIRECTORY + new SimpleDateFormat("yyyy/MM/dd").format(new Date());
    }
}
Salin selepas log masuk
rrree

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi muat naik fail SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan