摘要:使用時(shí)遇到一個(gè)問(wèn)題后臺(tái)使用做富文本編輯器,但其只提供了插入網(wǎng)絡(luò)圖片的功能,而不能上傳和管理本地圖片,好在提供了選項(xiàng)來(lái)為添加插件,開(kāi)搞一在編輯器中添加插件上傳圖片插件下載插件并放到靜態(tài)目錄下配置在中增加如下配置項(xiàng)上傳圖片的上傳圖片插件二后臺(tái)
使用keystone時(shí)遇到一個(gè)問(wèn)題:keystone后臺(tái)使用tinymce做富文本編輯器,但其只提供了插入網(wǎng)絡(luò)圖片的功能,而不能上傳和管理本地圖片,好在keystone提供了選項(xiàng)來(lái)為tinymce添加插件,so~開(kāi)搞
一、 在編輯器中添加插件 1. 上傳圖片插件下載插件并放到靜態(tài)目錄下
2. 配置在keystone.init()中增加如下配置項(xiàng):
{ "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" }, // 上傳圖片插件 } }二、后臺(tái)API 1. 監(jiān)聽(tīng)路由
在路由文件中增加如下代碼:
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. 建立新域來(lái)管理圖片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來(lái)解析文件,根據(jù)req.files.file.path將文件從緩沖區(qū)復(fù)制出來(lái) 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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97633.html
摘要:介紹是以和為基礎(chǔ)搭建的開(kāi)源的和應(yīng)用程序平臺(tái)。在官網(wǎng)上聲稱在中,用搭建數(shù)據(jù)驅(qū)動(dòng)的網(wǎng)站應(yīng)用程序和是最容易的。這樣實(shí)現(xiàn)一個(gè)網(wǎng)站只要定義和寫(xiě)前端代碼就好了。這應(yīng)該是前端猴子接外包的一個(gè)利器吧。 介紹 Keystone是以Express和MongoDB為基礎(chǔ)搭建的開(kāi)源的Node.js CMS和web應(yīng)用程序平臺(tái)。 Keystone在官網(wǎng)上聲稱:在Node.js中,用Keystone搭建數(shù)據(jù)驅(qū)動(dòng)的...
摘要:授權(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),購(gòu)買(mǎi)商業(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)...
摘要:選擇該頁(yè)面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時(shí)需要下載語(yǔ)言包放到對(duì)應(yīng)的文件夾下。 前言 我們常因?yàn)閐jango的自帶admin后臺(tái)功能而選擇該框架,但也因?yàn)槠渥詣?dòng)生成的特殊性而在做出特別的更改的時(shí)候束手束腳,鑒于項(xiàng)目已經(jīng)采用了django,而后臺(tái)要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁(yè)顯示,定制性高,后來(lái)翻了目前較為知名的幾款富文本編輯框,覺(jué)得還是tiny...
摘要:選擇該頁(yè)面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時(shí)需要下載語(yǔ)言包放到對(duì)應(yīng)的文件夾下。 前言 我們常因?yàn)閐jango的自帶admin后臺(tái)功能而選擇該框架,但也因?yàn)槠渥詣?dòng)生成的特殊性而在做出特別的更改的時(shí)候束手束腳,鑒于項(xiàng)目已經(jīng)采用了django,而后臺(tái)要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁(yè)顯示,定制性高,后來(lái)翻了目前較為知名的幾款富文本編輯框,覺(jué)得還是tiny...
摘要:選擇該頁(yè)面綁定的標(biāo)簽指定圖片上傳處理目錄注其中為了顯示為中文,標(biāo)明了中文,同時(shí)需要下載語(yǔ)言包放到對(duì)應(yīng)的文件夾下。 前言 我們常因?yàn)閐jango的自帶admin后臺(tái)功能而選擇該框架,但也因?yàn)槠渥詣?dòng)生成的特殊性而在做出特別的更改的時(shí)候束手束腳,鑒于項(xiàng)目已經(jīng)采用了django,而后臺(tái)要求能夠直接上傳富文本內(nèi)容直接用于網(wǎng)頁(yè)顯示,定制性高,后來(lái)翻了目前較為知名的幾款富文本編輯框,覺(jué)得還是tiny...
閱讀 900·2023-04-26 01:37
閱讀 3373·2021-09-02 15:40
閱讀 966·2021-09-01 10:29
閱讀 2898·2019-08-29 17:05
閱讀 3427·2019-08-28 18:02
閱讀 1184·2019-08-28 18:00
閱讀 1493·2019-08-26 11:00
閱讀 2615·2019-08-26 10:27