跳至主要內容

下载本地磁盘文件

chanchaw小于 1 分钟languagejava

源码实现

制作 api 路径

package com.xdf.zipperdye.config;

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfigure implements WebMvcConfigurer {
    @Value("${globalv.virtualpath}")
    private String virtualpath;

    @Value("${globalv.filepath}")
    private String filepath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
// windows 系统使用下面的方式
//        registry.addResourceHandler("/drawing/**").addResourceLocations("file:E:/drawingfiles/");
// linux 系统使用下面方式
        registry.addResourceHandler(virtualpath).addResourceLocations("file:" + filepath);
    }

    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
                connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
            }
        });
        return factory;
    }
}

配置文件指定绝对路径

在 springboot 项目配置文件 application.yml 中制作自定义的变量 globalv 注意如果 java 源码中 "file:" 后面没有使用斜线,则配置文件必须以斜线开头,表示绝对路径 同时在最后一个目录后面也必须有斜线,否则无法下载

globalv:
  # filepath: e:/drawingfiles/ # windows服务器
  filepath: /data/extdisk/shunjie/customsfiles/ # linux 服务器
  virtualpath: /drawing/**
  finereport: d:/software/FineReport9.0/WebReport

使用

以顺杰项目为例,访问地址是:https://www.barrel.fit/shunjiebe/drawing/文件名.txt 中间的 shunjiebe 是 nginx 反向代理的项目名称,后面的 drawing 是 java 源码中使用的 virtualpath