如何使用mongoose express配置tinymce图像上传?希望能在云端

如何使用mongoose express配置tinymce图像上传?希望能在云端,express,mongoose,tinymce,cloudinary,Express,Mongoose,Tinymce,Cloudinary,这是我从表单获取图像到cloudinary的设置,但我不知道如何将图像从tinymce获取到req.body,或者哪怕这是可能的 我可以使用tinymce.init{}或tinymce.activeEditor.uploadImages,甚至是tinymce.activeEditor.uploadImagesfunctionsuccess{}吗 模式 const mongoose = require('mongoose'); mongoose.Promise = global.Promise;

这是我从表单获取图像到cloudinary的设置,但我不知道如何将图像从tinymce获取到req.body,或者哪怕这是可能的

我可以使用tinymce.init{}或tinymce.activeEditor.uploadImages,甚至是tinymce.activeEditor.uploadImagesfunctionsuccess{}吗

模式

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;

const docSchema = new mongoose.Schema({
  image_url: [String],
});
module.exports = mongoose.model('Doc', docSchema);
形式

routes/index.js

const express = require('express');
const router = express.Router();
const myController = require('../controllers/myController');

router.get('/', myController.showDocs);
router.get('/add', myController.addDoc);

router.post('/add',
  myController.upload,
  myController.imageURL,
  myController.createDoc
);

module.exports = router;
myControllers.js

const mongoose = require('mongoose');
const Doc = mongoose.model('Doc');
const multer = require('multer');
const jimp = require('jimp');
const cloudinary = require('cloudinary');
const cloudinaryStorage = require('multer-storage-cloudinary');


cloudinary.config({
  cloud_name: process.env.CLOUD_NAME,
  api_key: process.env.CLOUD_API_KEY,
  api_secret: process.env.CLOUD_SECRET
});

const storage = cloudinaryStorage({
  cloudinary: cloudinary,
  folder: 'node_upload',
  allowedFormats: ['jpg', 'png'],
  filename: function (req, file, cb) {
    cb(undefined, uuid.v4());
  }
});
const multerOptions = {
  storage: storage,
  fileFilter(req, file, next) {
    const image = file.mimetype.startsWith('image/');
    if(image) {
      next(null, true);
    } else {
      next({ message: 'That filetype isn\'t allowed!' }, false);
    }
  }
};
exports.upload = multer(multerOptions).array('image');

exports.imageURL = (req, res, next) => {
  if (!req.files) {
    next(); // skip to the next middleware
    return;
  }
  image_url = [];
  for (var i = 0; i < req.files.length; i++) {
      image_url.push(req.files[i].url)
  }
  req.body.image_url = image_url;
  next();
}


exports.createDoc= async (req, res) => {
  const doc = new Doc(req.body);
  await doc.save();
  res.redirect('/');
};

如果在TinyMCE中插入二进制图像Base64、BLOB等,则可以配置编辑器以将其发送到您希望保存的任何位置。此处记录了该过程:


将图像注入TinyMCE有多种方法,包括粘贴和通过文件选择器。将TinyMCE配置为在插入图像后解决此问题意味着您只需处理一次,而不管图像如何进入编辑器

谢谢,我已经阅读了文档,但我看不到如何将图像放入req.body,然后在express中使用它们。我有我的服务器端上传处理程序脚本multer,jimp正在运行,但它只拾取req.body中的文件。。我试过了[其中blob了图像,但仍将其保存为textareaTinyMCE的一部分。当图像插入到您配置的URL时,它将发布该图像。文档中有一个后期处理脚本的示例。图像不是表单发布的一部分,而是在插入时发布的。您的服务器代码可以根据需要处理该图像。编辑器只要返回所需的JSON,就不关心处理映像的服务器代码类型。
const mongoose = require('mongoose');
const Doc = mongoose.model('Doc');
const multer = require('multer');
const jimp = require('jimp');
const cloudinary = require('cloudinary');
const cloudinaryStorage = require('multer-storage-cloudinary');


cloudinary.config({
  cloud_name: process.env.CLOUD_NAME,
  api_key: process.env.CLOUD_API_KEY,
  api_secret: process.env.CLOUD_SECRET
});

const storage = cloudinaryStorage({
  cloudinary: cloudinary,
  folder: 'node_upload',
  allowedFormats: ['jpg', 'png'],
  filename: function (req, file, cb) {
    cb(undefined, uuid.v4());
  }
});
const multerOptions = {
  storage: storage,
  fileFilter(req, file, next) {
    const image = file.mimetype.startsWith('image/');
    if(image) {
      next(null, true);
    } else {
      next({ message: 'That filetype isn\'t allowed!' }, false);
    }
  }
};
exports.upload = multer(multerOptions).array('image');

exports.imageURL = (req, res, next) => {
  if (!req.files) {
    next(); // skip to the next middleware
    return;
  }
  image_url = [];
  for (var i = 0; i < req.files.length; i++) {
      image_url.push(req.files[i].url)
  }
  req.body.image_url = image_url;
  next();
}


exports.createDoc= async (req, res) => {
  const doc = new Doc(req.body);
  await doc.save();
  res.redirect('/');
};