mirror of https://github.com/mindoc-org/mindoc.git
优化工作路径拼接方法
parent
a5d7be92af
commit
894382dfe0
|
@ -194,32 +194,31 @@ func ResolveCommand(args []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if conf.LogFile == "" {
|
if conf.LogFile == "" {
|
||||||
conf.LogFile = filepath.Join(conf.WorkingDirectory, "logs")
|
conf.LogFile = conf.WorkingDir("runtime","logs")
|
||||||
}
|
}
|
||||||
if conf.ConfigurationFile == "" {
|
if conf.ConfigurationFile == "" {
|
||||||
conf.ConfigurationFile = filepath.Join(conf.WorkingDirectory, "conf", "app.conf")
|
conf.ConfigurationFile = conf.WorkingDir( "conf", "app.conf")
|
||||||
config := filepath.Join(conf.WorkingDirectory, "conf", "app.conf.example")
|
config := conf.WorkingDir("conf", "app.conf.example")
|
||||||
if !filetil.FileExists(conf.ConfigurationFile) && filetil.FileExists(config) {
|
if !filetil.FileExists(conf.ConfigurationFile) && filetil.FileExists(config) {
|
||||||
filetil.CopyFile(conf.ConfigurationFile, config)
|
filetil.CopyFile(conf.ConfigurationFile, config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gocaptcha.ReadFonts(filepath.Join(conf.WorkingDirectory, "static", "fonts"), ".ttf")
|
if err := gocaptcha.ReadFonts(conf.WorkingDir( "static", "fonts"), ".ttf");err != nil {
|
||||||
|
log.Fatal("读取字体文件时出错 -> ",err)
|
||||||
err := beego.LoadAppConfig("ini", conf.ConfigurationFile)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Println("An error occurred:", err)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
uploads := filepath.Join(conf.WorkingDirectory, "uploads")
|
|
||||||
|
if err := beego.LoadAppConfig("ini", conf.ConfigurationFile);err != nil {
|
||||||
|
log.Fatal("An error occurred:", err)
|
||||||
|
}
|
||||||
|
uploads := conf.WorkingDir("uploads")
|
||||||
|
|
||||||
os.MkdirAll(uploads, 0666)
|
os.MkdirAll(uploads, 0666)
|
||||||
|
|
||||||
beego.BConfig.WebConfig.StaticDir["/static"] = filepath.Join(conf.WorkingDirectory, "static")
|
beego.BConfig.WebConfig.StaticDir["/static"] = filepath.Join(conf.WorkingDirectory, "static")
|
||||||
beego.BConfig.WebConfig.StaticDir["/uploads"] = uploads
|
beego.BConfig.WebConfig.StaticDir["/uploads"] = uploads
|
||||||
beego.BConfig.WebConfig.ViewsPath = filepath.Join(conf.WorkingDirectory, "views")
|
beego.BConfig.WebConfig.ViewsPath = conf.WorkingDir("views")
|
||||||
|
|
||||||
fonts := filepath.Join(conf.WorkingDirectory, "static", "fonts")
|
fonts := conf.WorkingDir("static", "fonts")
|
||||||
|
|
||||||
if !filetil.FileExists(fonts) {
|
if !filetil.FileExists(fonts) {
|
||||||
log.Fatal("Font path not exist.")
|
log.Fatal("Font path not exist.")
|
||||||
|
|
|
@ -289,4 +289,11 @@ func URLForWithCdnJs(p string) string {
|
||||||
return cdn + "/" + p
|
return cdn + "/" + p
|
||||||
}
|
}
|
||||||
return cdn + p
|
return cdn + p
|
||||||
|
}
|
||||||
|
|
||||||
|
func WorkingDir(elem ...string) string {
|
||||||
|
|
||||||
|
elems := append([]string{ WorkingDirectory },elem...)
|
||||||
|
|
||||||
|
return filepath.Join(elems...)
|
||||||
}
|
}
|
|
@ -882,7 +882,10 @@ func (c *DocumentController) Export() {
|
||||||
c.Abort("200")
|
c.Abort("200")
|
||||||
|
|
||||||
}else if output == "pdf" || output == "epub" || output == "docx" || output == "mobi"{
|
}else if output == "pdf" || output == "epub" || output == "docx" || output == "mobi"{
|
||||||
models.BackgroupConvert(c.CruSession.SessionID(),bookResult)
|
if err := models.BackgroupConvert(c.CruSession.SessionID(),bookResult);err != nil {
|
||||||
|
c.ShowErrorPage(500,"导出失败,请查看系统日志")
|
||||||
|
}
|
||||||
|
|
||||||
c.ShowErrorPage(200,"文档正在后台转换,请稍后再下载")
|
c.ShowErrorPage(200,"文档正在后台转换,请稍后再下载")
|
||||||
}else{
|
}else{
|
||||||
c.ShowErrorPage(200,"不支持的文件格式")
|
c.ShowErrorPage(200,"不支持的文件格式")
|
||||||
|
|
|
@ -72,6 +72,13 @@ var (
|
||||||
ebookConvert = "ebook-convert"
|
ebookConvert = "ebook-convert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func CheckConvertCommand() error {
|
||||||
|
args := []string{ "--version" }
|
||||||
|
cmd := exec.Command(ebookConvert, args...)
|
||||||
|
|
||||||
|
return cmd.Run()
|
||||||
|
}
|
||||||
|
|
||||||
// 接口文档 https://manual.calibre-ebook.com/generated/en/ebook-convert.html#table-of-contents
|
// 接口文档 https://manual.calibre-ebook.com/generated/en/ebook-convert.html#table-of-contents
|
||||||
//根据json配置文件,创建文档转化对象
|
//根据json配置文件,创建文档转化对象
|
||||||
func NewConverter(configFile string, debug ...bool) (converter *Converter, err error) {
|
func NewConverter(configFile string, debug ...bool) (converter *Converter, err error) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var(
|
var(
|
||||||
exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportProcessNum(),conf.GetExportQueueLimitNum())
|
exportLimitWorkerChannel = gopool.NewChannelPool(conf.GetExportLimitNum(),conf.GetExportQueueLimitNum())
|
||||||
)
|
)
|
||||||
|
|
||||||
type BookResult struct {
|
type BookResult struct {
|
||||||
|
@ -215,14 +215,21 @@ func (m *BookResult) ToBookResult(book Book) *BookResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
//后台转换
|
//后台转换
|
||||||
func BackgroupConvert(sessionId string,bookResult *BookResult){
|
func BackgroupConvert(sessionId string,bookResult *BookResult) error {
|
||||||
|
|
||||||
|
if err := converter.CheckConvertCommand(); err != nil {
|
||||||
|
beego.Error("检查转换程序失败 -> ",err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
err := exportLimitWorkerChannel.LoadOrStore(bookResult.Identify, func() {
|
err := exportLimitWorkerChannel.LoadOrStore(bookResult.Identify, func() {
|
||||||
bookResult.Converter(sessionId)
|
bookResult.Converter(sessionId)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
beego.Error("将导出任务加入任务队列失败 -> ",err)
|
beego.Error("将导出任务加入任务队列失败 -> ",err)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
exportLimitWorkerChannel.Start()
|
exportLimitWorkerChannel.Start()
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//导出PDF、word等格式
|
//导出PDF、word等格式
|
||||||
|
|
Loading…
Reference in New Issue