文件上傳自定義上傳路徑


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