介绍
大部分情况下,文件存储的配置都会配置uploadUrl
和downloadUrl
的值,这样图片和文件类型的业务字段会存储带域名的全路径文件地址,但是有些场景需要用户在专有内网的时候访问内网的文件存储地址,用户在公网的时候通过公网访问(一般情况下这个公网ip内部最后还是会转发到内网)文件存储地址,这个时候就要求存在数据库字段里的不能是全路径的地址,只能是想相对路径,这个时候可以通过前端访问的域名用nginx转发当前域名下的文件请求到所匹配环境的ip内的文件存储服务。
配置参考
cdn:
oss:
name: 本地文件NG系统
type: LOCAL
bucket: pamirs
# 此处可以不配置值,也可以配置相对路径前缀方便做转发
uploadUrl:
downloadUrl:
validTime: 3600000
timeout: 600000
active: true
referer:
localFolderUrl: /test/static
文件上传的路径同步配置nginx转发
location ~ /file/upload {
// 此处配置为后端服务的ip+端口
proxy_pass http://127.0.0.1:8190;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
excel导入场景相对路径在后端代码内无法保存导入的文件
在导入任务的前置hook处理相对文件路径的前缀
package pro.shushi.pamirs.demo.core.hook;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import pro.shushi.pamirs.file.api.FileModule;
import pro.shushi.pamirs.file.api.model.ExcelImportTask;
import pro.shushi.pamirs.meta.annotation.Hook;
import pro.shushi.pamirs.meta.api.core.faas.HookBefore;
import pro.shushi.pamirs.meta.api.dto.fun.Function;
@Component
public class DemoExcelImportTaskActionHookBefore implements HookBefore {
// 内网访问文件的地址
public static final String INNER_HOST = "http://127.0.0.1:6800";
@Override
@Hook(module = {FileModule.MODULE_MODULE}, model = {ExcelImportTask.MODEL_MODEL}, fun = {"createImportTask"})
public Object run(Function function, Object... args) {
if (args.length > 0) {
ExcelImportTask excelImportTask = (ExcelImportTask) args[0];
if (excelImportTask != null && excelImportTask.getFile() != null && StringUtils.isNotBlank(excelImportTask.getFile().getUrl())) {
excelImportTask.getFile().setUrl(INNER_HOST + excelImportTask.getFile().getUrl());
}
}
return null;
}
}
注意事项
上面的例子为本地文件NG系统的,如果是阿里云oss、7牛云等第三方文件存储服务,downloadUrl
可以按上面方案直接配置,uploadUrl
还是要按正常配置
Oinone社区 作者:nation原创文章,如若转载,请注明出处:https://doc.oinone.top/install/13988.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验