SpringBoot использует виртуальные пути для решения проблемы недоступных загрузок файлов.

Spring Boot
SpringBoot использует виртуальные пути для решения проблемы недоступных загрузок файлов.

Что могут другие, сможете и вы⏱

предисловие

Когда мы используем SprinBboot для загрузки файла, мы будем загружать файл по указанному пути на жестком диске.В это время, когда мы хотим получить доступ к файлу на стороне клиента, будет ситуация недоступности 404. Далее я буду поделитесь с разработчиками, как настроить виртуальные пути для разрешения недоступных файлов.

Реализовать идеи

  • Добавьте класс конфигурации, наследуемый от WebMvcConfigurerAdapter.
  • Добавьте реальный путь и виртуальный путь доступа к загруженному файлу на жестком диске в файл yml
  • Перепишите метод addResourceHandlers для реализации конфигурации виртуального пути.

Процесс реализации

  • Добавьте класс virtualPathConfigAdapter в пакет конфигурации и переопределите метод addResourceHandlers.
package com.lk.config;

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.WebMvcConfigurerAdapter;

import java.io.File;

@Configuration
public class virtualPathConfigAdapter extends WebMvcConfigurerAdapter {
    // 文件在硬盘中的路径
    @Value("${uploadFilePath}")
    private String uploadFilePath;
    // 虚拟访问的路径
    @Value("${virtualUploadPath}")
    private String virtualUploadPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /*
         * 此处配置的虚拟路径在内置tomcat生效,同时也在外部tomcat生效,外部tomcat使用时无需在配置文件中进行配置
         */
        registry.addResourceHandler(virtualUploadPath +"/**").addResourceLocations("file:"+ uploadFilePath + File.separator);
        //阿里云(映射路径去除盘符)
        //registry.addResourceHandler("/ueditor/image/**").addResourceLocations("/upload/image/");
        super.addResourceHandlers(registry);
    }
}


  • Добавьте конфигурацию в application.yml
# 真实文件存储路径 | 虚拟上传路径
uploadFilePath: "/Volumes/DataStorage/fileStorage/uploads"
virtualUploadPath: "/uploads"

достичь эффекта

Файл по реальному пути на жестком диске

Доступ через браузер через URL

напиши в конце

  • Если в статье есть ошибки, исправьте их в комментариях, если статья вам поможет, ставьте лайк и подписывайтесь 😊
  • Эта статья была впервые опубликована в Наггетс, если вам нужно перепечатать, пожалуйста, оставьте сообщение в области комментариев 💌