摘要:使用時遇到一個問題后臺使用做富文本編輯器,但其只提供了插入網(wǎng)絡(luò)圖片的功能,而不能上傳和管理本地圖片,好在提供了選項來為添加插件,開搞一在編輯器中添加插件上傳圖片插件下載插件并放到靜態(tài)目錄下配置在中增加如下配置項上傳圖片的上傳圖片插件二后臺
使用keystone時遇到一個問題:keystone后臺使用tinymce做富文本編輯器,但其只提供了插入網(wǎng)絡(luò)圖片的功能,而不能上傳和管理本地圖片,好在keystone提供了選項來為tinymce添加插件,so~開搞
一、 在編輯器中添加插件 1. 上傳圖片插件下載插件并放到靜態(tài)目錄下
2. 配置在keystone.init()中增加如下配置項:
{ "wysiwyg additional plugins": "uploadimage", "wysiwyg additional buttons": "uploadimage", "wysiwyg additional options": { "uploadimage_form_url": "/api/admin/upload-image", //上傳圖片的API "relative_urls": false, "external_plugins": { "uploadimage": "/js/uploadimage/plugin.min.js" }, // 上傳圖片插件 } }二、后臺API 1. 監(jiān)聽路由
在路由文件中增加如下代碼:
var router = express.Router(); var keystone = require("keystone"); var importRoutes = keystone.importer(__dirname); var routes = { api: importRoutes("./api"), }; router.post("/api/admin/upload-image", keystone.middleware.api, routes.api.upload_image); module.exports = router;
我們將API放到api/upload_image.js中,注意新增的API需要添加keystone.middleware.api中間件
2. 建立新域來管理圖片models/FileUpload.js:
var keystone = require("keystone"); var Types = keystone.Field.Types; /** * File Upload Model * =========== * A database model for uploading images to the local file system */ var FileUpload = new keystone.List("FileUpload"); var myStorage = new keystone.Storage({ adapter: keystone.Storage.Adapters.FS, fs: { path: keystone.expandPath("public/uploads"), // required; path where the files should be stored publicPath: "uploads", // path where files will be served } }); FileUpload.add({ name: { type: Types.Key, index: true}, file: { type: Types.File, storage: myStorage }, createdTimeStamp: { type: String }, alt1: { type: String }, attributes1: { type: String }, category: { type: String }, //Used to categorize widgets. priorityId: { type: String }, //Used to prioritize display order. parent: { type: String }, children: { type: String }, url: {type: String}, fileType: {type: String} }); FileUpload.defaultColumns = "name"; FileUpload.register();3. API細(xì)節(jié)
api/upload_image.js實(shí)現(xiàn)細(xì)節(jié):
var keystone = require("keystone"), fs = require("fs"), path = require("path"); var FileData = keystone.list("FileUpload"); module.exports = function (req, res) { var item = new FileData.model(), data = (req.method == "POST") ? req.body : req.query; // keystone采用的老版multer來解析文件,根據(jù)req.files.file.path將文件從緩沖區(qū)復(fù)制出來 fs.copyFile(req.files.file.path, path.join(__dirname, "../../public/uploads", req.files.file.name), function (err) { var sendResult = function () { if (err) { res.send({ error: { message: err.message } }); } else { // 按插件要求的返回格式返回URL res.send({ image: { url: "/uploads/" + req.files.file.name } }); } }; // TinyMCE upload plugin uses the iframe transport technique // so the response type must be text/html res.format({ html: sendResult, json: sendResult, }); }) }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/97633.html
摘要:介紹是以和為基礎(chǔ)搭建的開源的和應(yīng)用程序平臺。在官網(wǎng)上聲稱在中,用搭建數(shù)據(jù)驅(qū)動的網(wǎng)站應(yīng)用程序和是最容易的。這樣實(shí)現(xiàn)一個網(wǎng)站只要定義和寫前端代碼就好了。這應(yīng)該是前端猴子接外包的一個利器吧。 介紹 Keystone是以Express和MongoDB為基礎(chǔ)搭建的開源的Node.js CMS和web應(yīng)用程序平臺。 Keystone在官網(wǎng)上聲稱:在Node.js中,用Keystone搭建數(shù)據(jù)驅(qū)動的...
摘要:授權(quán)破解版易優(yōu)企業(yè)建站系統(tǒng)易優(yōu)企業(yè)建站系統(tǒng)是一款十分優(yōu)秀專業(yè)的為企業(yè)創(chuàng)建網(wǎng)站服務(wù)的軟件。去版權(quán)破解版強(qiáng)大好用,為企業(yè)創(chuàng)建網(wǎng)站提供很多幫助和便利。直接去易優(yōu)官網(wǎng),購買商業(yè)授權(quán)即可去除版權(quán)。eyoucms v1.4.9授權(quán)破解版(易優(yōu)企業(yè)建站系統(tǒng))是一款十分優(yōu)秀專業(yè)的為企業(yè)創(chuàng)建網(wǎng)站服務(wù)的軟件。eyoucms v1.4.9去版權(quán)破解版 強(qiáng)大好用,為企業(yè)創(chuàng)建網(wǎng)站提供很多幫助和便利。易優(yōu)cms破解授權(quán)...
摘要:選擇該頁面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時需要下載語言包放到對應(yīng)的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經(jīng)采用了django,而后臺要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
摘要:選擇該頁面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時需要下載語言包放到對應(yīng)的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經(jīng)采用了django,而后臺要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
摘要:選擇該頁面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時需要下載語言包放到對應(yīng)的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經(jīng)采用了django,而后臺要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
閱讀 967·2023-04-26 01:37
閱讀 3446·2021-09-02 15:40
閱讀 1054·2021-09-01 10:29
閱讀 2970·2019-08-29 17:05
閱讀 3475·2019-08-28 18:02
閱讀 1244·2019-08-28 18:00
閱讀 1540·2019-08-26 11:00
閱讀 2697·2019-08-26 10:27