文件上传自定义上传路径


2019-11-21

文件上传自定义上传路径,并且根据返回的Url可以进行访问

配置文件  .yml

#文件上传路径
file:
  #虚拟路径,对外展示
  staticAccessPath: /file/**
  #本地测试真实路径,可以改为服务器tomcat中路径
  fileupload: F:/fileupload/

WebConfig类

package io.renren.common.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
/**
 * @author: HYJ
 * @program: ivvdata-security
 * @description: 文件路径以及WebMvc配置
 * @create: 2019-11-15 10:13
 */
@Data
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${file.fileupload}")
    private String fileupload;

    @Value("${file.staticAccessPath}")
    private String staticAccessPath;

 
 //主要在这里 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + fileupload); }   //上面的方法跟这个一样,下面的可以删除 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/"); } }

Controller层

@PostMapping("/upload")
public R upload(@RequestParam("photo")MultipartFile photo, HttpServletRequest request) {// 定义上传文件存放的路径
         String path = configProperties.getFileupload() + "uploadPhotos/";
         System.out.println(path);
         // 定义文件在上传路径中的文件夹名称
         File folder = new File(path);
         // 检测folder是否是文件夹,不是就创建
         if (!folder.isDirectory()) {
             folder.mkdirs();
          }
          try {
            // 获取文件的原始名称
             String photoName = photo.getOriginalFilename();            
             // 文件保存操作
             photo.transferTo(new File(folder, photoName));             
             // 访问的url
             String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
             String photoPath = basePath + configProperties.getStaticAccessPath().substring(0, configProperties.getStaticAccessPath().lastIndexOf("/") + 1) + "uploadPhotos/" + photoName ;       
             System.out.println(basePath);
             System.out.println(photoPath );
             return R.ok();
          } catch (IOException e) {
             return R.error();
         }
}        


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM