摘要:使用時遇到一個問題后臺使用做富文本編輯器,但其只提供了插入網絡圖片的功能,而不能上傳和管理本地圖片,好在提供了選項來為添加插件,開搞一在編輯器中添加插件上傳圖片插件下載插件并放到靜態(tài)目錄下配置在中增加如下配置項上傳圖片的上傳圖片插件二后臺
使用keystone時遇到一個問題:keystone后臺使用tinymce做富文本編輯器,但其只提供了插入網絡圖片的功能,而不能上傳和管理本地圖片,好在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細節(jié)
api/upload_image.js實現細節(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來解析文件,根據req.files.file.path將文件從緩沖區(qū)復制出來 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, }); }) }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97633.html
摘要:介紹是以和為基礎搭建的開源的和應用程序平臺。在官網上聲稱在中,用搭建數據驅動的網站應用程序和是最容易的。這樣實現一個網站只要定義和寫前端代碼就好了。這應該是前端猴子接外包的一個利器吧。 介紹 Keystone是以Express和MongoDB為基礎搭建的開源的Node.js CMS和web應用程序平臺。 Keystone在官網上聲稱:在Node.js中,用Keystone搭建數據驅動的...
摘要:授權破解版易優(yōu)企業(yè)建站系統(tǒng)易優(yōu)企業(yè)建站系統(tǒng)是一款十分優(yōu)秀專業(yè)的為企業(yè)創(chuàng)建網站服務的軟件。去版權破解版強大好用,為企業(yè)創(chuàng)建網站提供很多幫助和便利。直接去易優(yōu)官網,購買商業(yè)授權即可去除版權。eyoucms v1.4.9授權破解版(易優(yōu)企業(yè)建站系統(tǒng))是一款十分優(yōu)秀專業(yè)的為企業(yè)創(chuàng)建網站服務的軟件。eyoucms v1.4.9去版權破解版 強大好用,為企業(yè)創(chuàng)建網站提供很多幫助和便利。易優(yōu)cms破解授權...
摘要:選擇該頁面綁定的標簽指定圖片上傳處理目錄注其中為了顯示為中文,標明了中文,同時需要下載語言包放到對應的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經采用了django,而后臺要求能夠直接上傳富文本內容直接用于網頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
摘要:選擇該頁面綁定的標簽指定圖片上傳處理目錄注其中為了顯示為中文,標明了中文,同時需要下載語言包放到對應的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經采用了django,而后臺要求能夠直接上傳富文本內容直接用于網頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
摘要:選擇該頁面綁定的標簽指定圖片上傳處理目錄注其中為了顯示為中文,標明了中文,同時需要下載語言包放到對應的文件夾下。 前言 我們常因為django的自帶admin后臺功能而選擇該框架,但也因為其自動生成的特殊性而在做出特別的更改的時候束手束腳,鑒于項目已經采用了django,而后臺要求能夠直接上傳富文本內容直接用于網頁顯示,定制性高,后來翻了目前較為知名的幾款富文本編輯框,覺得還是tiny...
閱讀 891·2023-04-26 01:37
閱讀 3368·2021-09-02 15:40
閱讀 955·2021-09-01 10:29
閱讀 2887·2019-08-29 17:05
閱讀 3418·2019-08-28 18:02
閱讀 1181·2019-08-28 18:00
閱讀 1483·2019-08-26 11:00
閱讀 2603·2019-08-26 10:27