在控制层controller:
方法一:
package com.example.windward.controller;
import com.example.windward.entity.UserInfo;
import com.example.windward.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RestController
@RequestMapping("/upphoto")
@CrossOrigin(origins = "*",maxAge = 3600)
public class UploadUser {
@Autowired
UserInfoService userInfoService;
@PostMapping("/fileUpload")
public String fileUpload(@RequestParam MultipartFile file, UserInfo userInfo) throws IOException {
/**
* 上传图片
*/
System.out.println(userInfo.getPhoto());
String filePath = "上传图片的路径";
//获取原始图片的拓展名
String originalFilename = file.getOriginalFilename();
//新的文件名字
String newFileName = UUID.randomUUID() + originalFilename;
//封装上传文件位置的全路径
File targetFile = new File(filePath, newFileName);
//把本地文件上传到封装上传文件位置的全路径
file.transferTo(targetFile);
userInfo.setPhoto(newFileName);
System.out.println("新文件名:"+newFileName);
return userInfo.getPhoto();
}
}
方法二:
package com.example.studengmc03.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RestController
@RequestMapping("/upfile")
@CrossOrigin(origins = "*",maxAge = 3600)
public class UpfileController {
//要上传的路径
@Value("${upfile.photoPath}")
String path;
@PostMapping("/photo")
public String upphoto(@RequestParam MultipartFile file) throws IOException {
//获得原始文件名 123.jpg
String originName = file.getOriginalFilename();
//新文件名 5e37e417-7694-4604-bf2e-987f9abe959a
String filename = UUID.randomUUID().toString()+originName.substring(originName.lastIndexOf("."));
//将文件保存到指定
file.transferTo(new File(path+filename));
//向客户端浏览器返回文件名
return filename;
}
}
yaml:
servlet:
multipart:
max-file-size: 500MB #文件最大限制
max-request-size: 500MB #请求最大限制
#图片上传路径
upfile:
photoPath: 图片的路径(不需要带引号)
方法三:(当前后端分离时,同时上传两个文件夹)
package com.example.windward.controller;
import com.example.windward.entity.Clerk;
import com.example.windward.entity.UserInfo;
import com.example.windward.service.ClerkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
@RestController
@RequestMapping("/upflie")
@CrossOrigin(origins = "*",maxAge = 3600)
public class UploadClerk {
@Autowired
ClerkService clerkService;
@PostMapping("/uploadclerk")
public String fileUpload(@RequestParam MultipartFile file, Clerk clerk) throws IOException {
/**
* 上传图片
*/
System.out.println(clerk.getCardphoto());
String filePath = "上传图片的地址";
String filePath2 = "上传图片的地址";
//获取原始图片的拓展名
String originalFilename = file.getOriginalFilename();
//新的文件名字
String newFileName = UUID.randomUUID() + originalFilename;
//封装上传文件位置的全路径
file.transferTo(new File(filePath + newFileName));
Path sourcePath = Paths.get(filePath + newFileName);
Path destPath = Paths.get(filePath2 + newFileName);
Files.copy(sourcePath, destPath); // 复制文件到另一个文件夹
clerk.setCardphoto(newFileName);
System.out.println("新文件名:"+newFileName);
System.out.println(filePath+ newFileName + " " + filePath2 + newFileName);
return clerk.getCardphoto();
}
}