Keystone是以Express和MongoDB为基础搭建的开源的Node.js CMS和web应用程序平台,快速入门
需求
上传图片到CDN,这里以又拍云为例。(非广告)
分析
keystone自带了很多文件类型,CloudinaryImage、CloudinaryImages、LocalFile、S3 File、AzureFile,除了LocalFile,其他都是第三方服务。但是我们团队使用的是国内的又拍云,于是只能自己开发。
起初我们是用LocalFile上传到服务器,但是这样的图片下载速度稍微慢了点,于是我们决定将图片上传时,直接上传到cdn。
我注意到了keystone自带的域监听,可以监听某个字段修改时的操作。我就是利用这个属性来监听图片上传,并且将图片移至又拍云的。
实现
- models/lib/upyun.js
1 | var keystone = require('keystone'); |
- models/Post.js
1 | var keystone = require('keystone'); |
这样每次文章新增或者修改图片,都会被上传到CDN,而且我们采用同名的方式上传,只要加上prefix,file.href就是我们要的图片地址了。本例子只讲到又拍云,我相信同样的方法也适用其他CDN服务的。
感谢阅读,希望对你有帮助。