找回密码
 立即注册
查看: 33|回复: 0

JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之本地附件储存文件上传

[复制链接]

73

主题

3

精华

77

金币

技术维护QQ:515138

积分
165
发表于 6 天前 | 显示全部楼层 |阅读模式
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战之本地附件储存文件上传
1). 生成的前端代码形式如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>上传文件</title>
  6. </head>
  7. <body>
  8.     <form action="/upload" method="post" enctype="multipart/form-data">
  9.         姓名: <input type="text" name="username"><br>
  10.         年龄: <input type="text" name="age"><br>
  11.         头像: <input type="file" name="file"><br>
  12.         <input type="submit" value="提交">
  13.     </form>
  14. </body>
  15. </html>
复制代码
直接将里的 upload.html 文件,复制到springboot项目工程下的static目录里面。

1.jpg
http://localhost:8080/upload.html
2). 生成的服务端代码形式如下
  1. package com.zidiu.controller;
  2. import com.zidiu.pojo.Result;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.web.bind.annotation.PostMapping;
  5. import org.springframework.web.bind.annotation.RequestParam;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import org.springframework.web.multipart.MultipartFile;
  8. import java.io.File;
  9. import java.util.UUID;
  10. @Slf4j
  11. @RestController
  12. public class UploadController {
  13.     private static final String UPLOAD_DIR = "F:/images/";
  14.     /**
  15.      * 上传文件 - 参数名file
  16.      */
  17.     @PostMapping("/upload")
  18.     public Result upload(String username, Integer age , @RequestParam("file") MultipartFile file) throws Exception {
  19.         log.info("上传文件:{}, {}, {}", username, age, file);
  20.         if(!file.isEmpty()){
  21.             // 生成唯一文件名
  22.             String originalFilename = file.getOriginalFilename();
  23.             String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
  24.             String uniqueFileName = UUID.randomUUID().toString().replace("-", "") + extName;
  25.             // 拼接完整的文件路径
  26.             File targetFile = new File(UPLOAD_DIR + uniqueFileName);
  27.             // 如果目标目录不存在,则创建它
  28.             if (!targetFile.getParentFile().exists()) {
  29.                 targetFile.getParentFile().mkdirs();
  30.             }
  31.             // 保存文件
  32.             file.transferTo(targetFile);
  33.         }
  34.         return Result.success();
  35.     }
  36. }
复制代码
1.png

Spring中提供了一个API:MultipartFile,使用这个API就可以来接收到上传的文件
问题1:如果表单项的名字和方法中形参名不一致,该怎么办?
  1. public Result upload(String username,
  2.                         Integer age,  
  3.                         MultipartFile image) //image形参名和请求参数名file不一致
复制代码
解决:使用@RequestParam注解进行参数绑定
  1. public Result upload(String username,
  2.                      Integer age,
  3.                      @RequestParam("file") MultipartFile image)
复制代码
MultipartFile 常见方法:
  • String  getOriginalFilename();  //获取原始文件名
  • void  transferTo(File dest);    //将接收的文件转存到磁盘文件中
  • long  getSize();   //获取文件的大小,单位:字节
  • byte[]  getBytes();    //获取文件内容的字节数组
  • InputStream  getInputStream();    //获取接收到的文件内容的输入流

那么如果需要上传大文件,可以在 application.xml 进行如下配置:
  1. spring:
  2.   servlet:
  3.     multipart:
  4.       max-file-size: 10MB
  5.       max-request-size: 100MB
复制代码
完整源代码下载:
demo.zip (49.96 KB, 下载次数: 0, 售价: 50 金币)

SpringBoot3+Vue3开发综合实战项目:
JavaWeb(SpringBoot3+vue3)开发+教学管理系统项目实战
网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2025-12-1 07:01

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表