1.
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8080
connection-timeout: 5000ms
servlet:
context-path: /wedu
spring:
# 环境 dev|test|prod
profiles:
active: dev
# jackson时间格式化
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
enabled: true
web:
resources:
static-locations: classpath:/static/images
web 的resources部分 和 multipart部分 设置上传的地址 和上传文件大小
因为tomcat的大小默认是不超过1Mb
2.
package com.wedu.modules.chejian.controller;
import cn.hutool.core.io.FileUtil;
//@Value注解是springframework下的注解
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.wedu.common.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletResponse;
//import java.io.File;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
import static org.aspectj.weaver.tools.cache.SimpleCacheFactory.path;
@RestController
@RequestMapping("/sys/file")
public class SysFileController {
/**
* 文件上传接口
* @param file
* @return
* @throws IOException
* 对应与前端图片上传路径:http://localhost:8081/file/upload/img
*/
@PostMapping("/upload")
public String upload(@RequestParam MultipartFile file, ServletRequest request) throws IOException {
String avatar = file.getOriginalFilename();
// 生成UUID
avatar = UUID.randomUUID().toString().replace("-", "") + avatar.substring(avatar.lastIndexOf("."));
// 将文件保存到本地
String avatarUrl = null;
if (avatar != null) {
// 生成本地地址,将地址保存到数据库
avatarUrl = "http://localhost:8080/wedu/upload/" + avatar;
// 将文件保存到本地地址
try {
// files.get(0).transferTo(new File("G:\\IDEA2023\\CatAndDogDiaryBackEnd\\CatAndDogEnd\\src\\main\\resources\\static\\avatar\\" + avatar));
file.transferTo(new File("D:\\725项目\\解压\\upload\\" + avatar));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return avatarUrl;
}}
/*当调用此接口时,upload 方法做了以下工作:
接收前端通过 HTTP POST 请求发送的文件。
生成一个唯一的文件名(基于 UUID)。
将文件保存到本地指定的目录中。
构造文件的访问 URL 并返回给前端。
* */
/*具体来说,在调用 upload 方法进行文件上传时,该方法执行了以下操作:
获取原始文件名:从 MultipartFile 中获取上传文件的原始文件名。
生成唯一文件名:为了防止文件名冲突,使用 UUID 生成一个新的文件名。
构造文件路径:构建一个指向文件的新位置的 URL。
保存文件:将文件保存到本地的指定目录。注意这里的路径是 D:\\725项目\\解压\\upload\\,确保这个路径在你的系统上是可写的,并且存在。
返回文件 URL:构造一个文件的访问 URL,并将其返回给调用方。
*
* */
3.前端部分
user.vue部分
user-add-or-update.vue