Leanote使用七牛来做为图床

 果农   2020-01-01 04:46   879 人阅读  0 条评论

最近一直在用leanote来做自己的笔记整理,在使用的过程中发现图片的尺寸有点大,尤其是很多时候为了方便,我是直接截屏来粘贴上传的,这样造成的就是有些图片就比较大(可能是hiDpi的原因,图片尺寸较大),本来想研究一下go里怎么做图片的优化的,后来一想,七牛在这方面处理的很好,而且,它还提供10个G的免费空间,索性,直接研究Go下的七牛API会更直接一些。
这里就不写怎么申请七牛空间。有需要的可以直接百度。

自定义镜像域名

因为已经有很多图片了,所以,这里需要做一个镜像配置,而且,这样的话,目前还不用去开发七牛的上传功能。
为了安全,这个域名绑定在自身服务器的当前用户目录里,比如:

LEANOTE_root/files/517/USER_ID/

对Leanote的代码也没有做太大的改变,就改了ApiFileController.go里的getImage里直接302跳转到七牛上绑定的域名,这个对客户端不是很友好,所以,又判断了一下UserAgent,如果是客户端的话,就还使用原来的方法从服务器上加载文件内容并输出,相应的代码段如下:

func (c ApiFile) GetImage(fileId string) revel.Result {
    path := fileService.GetFile(c.getUserId(), fileId) // 得到路径
    if path == "" {
        return c.RenderText("")
    }
    fn := strings.TrimLeft(path, "/")
    //files/427/540817e099c37b583c000001/
    ua := c.Request.GetHttpHeader("User-Agent")
    if strings.Index(ua, "Needle") != -1 {
        // 实际上,应该返回的是完事的URL路径,目前懒得写完整的代码了,先这样偷懒一下
        fn = revel.BasePath + "/" + strings.TrimLeft(path, "/")
        file, _ := os.Open(fn)
        return c.RenderFile(file, revel.Inline) // revel.Attachment
    } else {
        return c.Redirect("http://img.imzhp.com/" + fn[35:] + "-web")
    }
}

后面等有空了,做一个完整的处理。

下载七牛API

go get github.com/qiniu/api.v7

下载的时候发现,最近,下载速度是巨慢,goproxy用过,终端直接蕃蔷也试过,都不理想,索性,使用下载工具直接从github上下载压缩包放到go的src里。

配置文件

我做的这些修改,只是单人使用的,所以直接就使用配置文件来处理了,如果需要面向注册用户使用的话,需要在用户设置里去处理。
在app.conf中添加如下信息

# qiniu config
qiniu.enabled=false # 是否开启七牛存储
qiniu.use_https=false # 是否使用https
qiniu.bucket=  # 七牛存储空间的名称
qiniu.access_key= # 七牛个人中心申请到的ak
qiniu.secret_key= # 七牛个人中心申请到的ak对应的sk

修改Leanote代码

这里目前考虑了一下,需要处理几个部分:

  1. 上传部分的代码,需要同步上传到七牛云
  2. 上传完成后,需要直接返回七牛云的外链URL
本文地址:http://haolie.net/post/716.html
版权声明:本文为原创文章,版权归 果农 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?