这里要先在resources/static下面创建一个包用来保存图片(这个包的名称要和下面工具类的路径名称要一样)
1,创建一个工具类LocalUploadImageUtils
package com.pla.common.utils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.util.UUID;
public class LocalUploadImageUtils{
public static String uploadImageFile(MultipartFile file) {
String newFileName = getNewFileNameByUuid(file.getOriginalFilename());
String finalPath = ConfigFileMessageUtils.IMAGE_ALL_DIR + newFileName;
String url = "http://"
+ ConfigFileMessageUtils.LOCAL_IP+ ":"
+ ConfigFileMessageUtils.SERVER_PORT + "/"
+ ConfigFileMessageUtils.IMAGE_DIR_NAME + "/"
+ newFileName;
boolean flag = upload(file, finalPath);
if (!flag) {
throw new RuntimeException("图片上传失败");
}
return url;
}
public static String uploadImageFile(MultipartFile file,String fileName) {
String finalPath = ConfigFileMessageUtils.IMAGE_ALL_DIR + fileName;
String url = "http://"
+ ConfigFileMessageUtils.LOCAL_IP+ ":"
+ ConfigFileMessageUtils.SERVER_PORT + "/"
+ ConfigFileMessageUtils.IMAGE_DIR_NAME + "/"
+ fileName;
boolean flag = upload(file, finalPath);
if (!flag) {
throw new RuntimeException("图片上传失败");
}
return url;
}
public static String addFixForFileName(String fix, String fileName) {
return fix + getFileSuffix(fileName);
}
private static boolean upload(MultipartFile file, String finalPath){
File dest = new File(finalPath);
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
}
try {
file.transferTo(dest);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
private static String getNewFileNameByUuid(String fileName) {
return getUUID() + getFileSuffix(fileName);
}
private static String getUUID(){
return UUID.randomUUID().toString().replace("-", "") ;
}
private static String getFileSuffix(String fileName){
return fileName.substring(fileName.lastIndexOf("."));
}
}
@Component
class ConfigFileMessageUtils implements InitializingBean {
@Value("${server.port}")
private String serverPort;
public static String LOCAL_IP;
public static String SERVER_PORT;
public static String IMAGE_DIR_NAME = "img";
public static String IMAGE_ALL_DIR;
@Override
public void afterPropertiesSet() throws Exception {
SERVER_PORT = this.serverPort;
LOCAL_IP = InetAddress.getLocalHost().getHostAddress();
IMAGE_ALL_DIR = System.getProperty("user.dir") + "/src/main/resources/static/" + IMAGE_DIR_NAME + "/";
}
}
@Configuration
@EnableWebMvc
class ImageWebMvcConfigurerAdapter implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler(""+ConfigFileMessageUtils.IMAGE_DIR_NAME+"//**")
.addResourceLocations("file:"+ConfigFileMessageUtils.IMAGE_ALL_DIR);
registry.addResourceHandler("/webjars/**")
.addResourceLocations(
"classpath:/META-INF/resources/webjars/");
}
}
2.Controller层
package com.pla.controller;
import com.pla.common.result.Result;
import com.pla.common.utils.LocalUploadImageUtils;
import com.pla.service.UploadPictureService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/UploadPicture")
public class UploadPictureController {
@Autowired
private UploadPictureService uploadPictureService;
@ApiOperation("图片上传")
@PostMapping("/uPicture")
public Result UploadPicture(MultipartFile file ){
String fileName = file.getOriginalFilename();
System.out.println(fileName);
String imageFile = LocalUploadImageUtils.uploadImageFile(file,fileName);
if (!imageFile.isEmpty()){
return Result.ok(imageFile);
}
return Result.fail();
}
}
这里图片发送成功后会返回一个URL地址,这个地址可以在浏览器上面进行访问。
可以根据自己的需求进行修改代码,谢谢大家的浏览!