Web无插件直播点播平台EasyDSS有两种运行模式,一种是以可执行程序直接运行,另外一种是以服务运行。一般在生产环境下,多会采用以服务的方式进行运行。
但是在以服务运行时,在编程中对于路径的处理需要特别处理。比如在以“./config.toml ”代表配置文件路径的情况下,如果直接运行可执行程序,就能够找到正确的路径。“./ ”代表当前路径。但以服务运行,则无法找到正确的路径。因此如果以服务运行,当前路径在不同的操作系统下就为不同的路径。
在 Windows 操作系统下,如果程序以服务运行,当前路径在 C:\Windows\System32 中。
在 Linux 操作系统中,如果以服务运行,当前路径在 / 中。
即如果以服务运行,对于 “./config.toml”,在 Windows 操作系统下,就会在 C:\Windows\System32 查找,因此不会查找到。
所以在代码中对于此种路径进行编码优化,具体方式如下:
//GetRealPath 判断传递的是否是相对路径,返回真实路径
func GetRealPath(path string) string {
//如果是绝对路径
if filepath.IsAbs(path) {
return FormatPath(path)
}
return FormatPath(filepath.Join(CWD(), path))
}
//FormatPath 格式化地址格式
func FormatPath(path string) string {
return strings.Replace(path, "\\", "/", -1)
}
// 获取当前工作目录
func CWD() string {
path, err := os.Executable()
if err != nil {
return ""
}
return filepath.Dir(path)
}
GetRealPath 就是将“./”这种路径转换为绝对路径的方法。对于EasyDSS中绝对路径的需求,是为了无论从外部还是内部访问都可以通过绝对路径找到该文件夹,在EasyDSS做开发调用时,该方式十分可靠。
EasyDSS提供了丰富的API接口供大家调用,在测试版本中也可以自行进行二次开发,因此大家有需求欢迎联系我们了解,更多视频相关解决方案,欢迎关注我们或者访问TSINGSEE青犀视频官方网站。
来源:oschina
链接:https://my.oschina.net/u/4619556/blog/4957137
标签: