图片上传工具类
package com.hi.hhy.utils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
/**
* @author hi
* @program: uni-java3
* @description: 文件上传
* @date 2021-05-31 15:01:00
*/
public class UpImage {
/**
* @param file 单个文件
* @param path 上传路径
* @param request HttpServletRequest 用于获取协议 端口 服务器名称
* @return java.lang.String 返回一个在线服务器访问地址
* @author
* @describe: 所有的上传都放在imgupload目录下
* @date 2021/5/31 17:41
*/
public static String uploadImg(MultipartFile file, String path, HttpServletRequest request){
//上传路径
// d:/imgupload/aaa/bbb/ccc;
// /home/imgupload/aa/bb/cc
//获取配置静态资源上传文件夹 后面的路径
String paths = path.substring(path.indexOf("imgupload")+9);
//文件不为空时
if(!file.isEmpty()){
//拿到上传的文件名称
String originalFilename = file.getOriginalFilename();
//获取上传文件的后缀名
String substring = originalFilename.substring(originalFilename.lastIndexOf('.'));
//获得自定义文件名
String filename = UUID.randomUUID()+substring;
File f = new File(path);
if(!f.exists()){
//不存在就创建文件夹
f.mkdirs();
}
try {
file.transferTo(new File(path,filename));
//返回访问地址 image 就是配置的静态资源访问路径
String s = VisitSite.GetVisitSite(request)+"image"+paths+"/"+filename;
//输出:http://localhost:8080/image/merchantimg/b6a27a5f-6a3c-4f0d-a9d2-7c05578204f5.jpg
return s;
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* @param files 多个文件
* @param path 文件上传路径
* @param request
* @return java.lang.String 返回在线服务器访问路径
* @author
* @describe:
* @date 2021/6/10 13:49
*/
public static String uploadImgs(MultipartFile[] files, String path, HttpServletRequest request){
String paths = path.substring(path.indexOf("imgupload")+9);
if(files.length>0){
// System.out.println("进来了"+identity.length);
//获取上传路径
File file = new File(path);
if(!file.exists()){
//不存在就创建文件夹
file.mkdirs();
}
List<String> list = new ArrayList<>();
for (MultipartFile multipartFile : files) {
if(!multipartFile.isEmpty()){
String originalFilename = multipartFile.getOriginalFilename();
//获取文件后缀名
String substring = originalFilename.substring(originalFilename.lastIndexOf('.'));
//获得自定义文件名
String filename = UUID.randomUUID()+substring;
try {
//开始上传
multipartFile.transferTo(new File(path,filename));
String s = ServerAddress.GetServerAddress(request)+"image"+paths+"/"+filename;
list.add(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//把list转为字符串以,隔
String str = list.stream().collect(Collectors.joining(","));
//这样就可以直接通过路径访问了
//http://localhost:8080/image/commodityimg/f7079abc-a281-465e-889c-656e9e82ac63.png,http://localhost:8080/image/commodityimg/ac81a6ac-1e93-46d6-9482-f16f4938c0d2.jpg
return str;
}
return null;
}
}
服务器访问地址前缀
package com.hi.hhy.utils;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
/**
* @author hi
* @program: uni-java3
* @description: 获取服务器访问地址
* @date 2021-05-30 14:56:23
*/
public class ServerAddress {
public static String GetServerAddress(HttpServletRequest request){
//可以返回当前页面使用的协议,http 或是 https;
String scheme = request.getScheme();
//可以返回当前页面所在的服务器的名字;
String serverName = request.getServerName();
//可以返回当前页面所在的服务器使用的端口,就是8080;
int serverPort = request.getServerPort();
String path = scheme+"://"+serverName+":"+serverPort+"/";
return path;
}
}
//输出:http://localhost:8080/
配置静态资源访问路径
package com.hi.hhy.config;
import com.hi.hhy.pojo.Upload;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.io.File;
/**
* @author hi
* @program: uni-java3
* @description:
* @date 2021-05-22 17:14:05
*/
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//配置静态资源访问路径
//图片存放地址
String path = "d:/imgupload/";
// String path = "/home/imgupload/";
registry.addResourceHandler("/image/**")
.addResourceLocations("file:"+path);
}
}