SpringBoot图片文件上传返回服务器访问路径MultipartFile

2022-06-22 11:05:49

图片上传工具类

packagecom.hi.hhy.utils;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServletRequest;importjava.io.File;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;importjava.util.stream.Collectors;/**
 * @author hi
 * @program: uni-java3
 * @description: 文件上传
 * @date 2021-05-31 15:01:00
 */publicclassUpImage{/**
     * @param file 单个文件
     * @param path 上传路径
     * @param request HttpServletRequest  用于获取协议 端口 服务器名称
     * @return java.lang.String   返回一个在线服务器访问地址
     * @author
     * @describe:   所有的上传都放在imgupload目录下
     * @date 2021/5/31 17:41
     */publicstaticStringuploadImg(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=newFile(path);if(!f.exists()){//不存在就创建文件夹
                f.mkdirs();}try{
                file.transferTo(newFile(path,filename));//返回访问地址	image 就是配置的静态资源访问路径String s=VisitSite.GetVisitSite(request)+"image"+paths+"/"+filename;//输出:http://localhost:8080/image/merchantimg/b6a27a5f-6a3c-4f0d-a9d2-7c05578204f5.jpgreturn s;}catch(IOException e){
                e.printStackTrace();}}returnnull;}/**
     * @param files  多个文件
	 * @param path  文件上传路径
	 * @param request
     * @return java.lang.String 返回在线服务器访问路径
     * @author
     * @describe:
     * @date 2021/6/10 13:49
     */publicstaticStringuploadImgs(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=newFile(path);if(!file.exists()){//不存在就创建文件夹
                file.mkdirs();}List<String> list=newArrayList<>();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(newFile(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.jpgreturn str;}returnnull;}}

服务器访问地址前缀

packagecom.hi.hhy.utils;importjavax.servlet.http.HttpServletRequest;importjava.io.File;/**
 * @author hi
 * @program: uni-java3
 * @description: 获取服务器访问地址
 * @date 2021-05-30 14:56:23
 */publicclassServerAddress{publicstaticStringGetServerAddress(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/

配置静态资源访问路径

packagecom.hi.hhy.config;importcom.hi.hhy.pojo.Upload;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;importorg.springframework.web.servlet.config.annotation.ViewControllerRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;importjava.io.File;/**
 * @author hi
 * @program: uni-java3
 * @description:
 * @date 2021-05-22 17:14:05
 */@ConfigurationpublicclassMyMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistry registry){//配置静态资源访问路径//图片存放地址String path="d:/imgupload/";//      String path = "/home/imgupload/";
        registry.addResourceHandler("/image/**").addResourceLocations("file:"+path);}}
  • 作者:菜2001
  • 原文链接:https://blog.csdn.net/weixin_45451147/article/details/117804819
    更新时间:2022-06-22 11:05:49