wangEditor图片上传,vue3+nodejs

  • 前端代码

我这里是自定义上传,最重要的是customUpload函数,官方文档也有

96d66cfb60b34e39823461e3c5994546.jpg

464d0468595c491492130bfa475c31f9.jpg

 

 dda2a2ab9ea34d1c8b677d03deadbbb2.jpg

 下面是我返回的数据alt和href没管,主要是返回url

1f9f74076f3a4f6c929ccd413c48e87d.jpg

 代码:

const editorConfig = { MENU_CONF: {} }
editorConfig.MENU_CONF['uploadImage'] = {
      //自定义上传,这里server就不需要了
      // server: '/adminapi/news/uploadimg',
      timeout: 5 * 1000, // 5s

      //默认
      fieldName: 'wangeditor-uploaded-image',

      //这里的Authorization是我的token根据自己需要,自定义上传Content-Type在这写了没用
      headers: { Authorization: `Bearer ${token}`},

      //图片大小限制
      maxFileSize: 10 * 1024 * 1024, // 10M
 
      base64LimitSize: 5 * 1024, // 5kb 以下插入 base64
 
      onBeforeUpload(files) {
        console.log('onBeforeUpload', files)
      
        return files // 返回哪些文件可以上传
        // return false 会阻止上传
      },
    async customUpload(file, insertFn) {                   // JS 语法
      /* file 即选中的文件
      */
    const  newsform=new  FormData()

     newsform.append("file",file)
      const result = await axios.post(`/adminapi/news/uploadimg`, newsform, {
        headers: {
      'Content-Type': 'multipart/form-data'
    }
      })
        const url='http://127.0.0.1:3000/'+result.data.data.url
      // 最后插入图片
        insertFn(url)
    },
      onProgress(progress) {
        console.log('onProgress', progress)
      },
      onSuccess(file, res) {
        console.log('onSuccess', file, res)
      },
      onFailed(file, res) {
        alert(res.message)
        console.log('onFailed', file, res)
      },
      onError(file, err, res) {
        alert(err.message)
        console.error('onError', file, err, res)
      },
    
    }

  • 后端代码nodejs

注意的是如果图片太大,要在app.js调整初始的大小限制97413650749d474cb89fbb0ef002552b.jpg

 这是我的接口,multer是必须要的24b0cc363d334ec0b3a8b960b3647de1.jpg

 这是返回的内容

12c5a81c142a456c96cdabc4e0d1bfe6.jpg

 fefd92534fcb4f3ca1f8c69b67f4afe3.jpg

 代码:

const express = require("express")
const NewsRouter = express.Router()
const path = require("path")
const NewsController = require("../../controllers/admin/NewsController")
const multer = require("multer")
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'public/news/newsuploads/'); // 设置存储目录
    },
    filename: function (req, file, cb) {
        // 生成唯一的文件名,保留原始文件的扩展名
        const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
        const ext = path.extname(file.originalname);

        // console.log(file.originalname)
        cb(null, file.fieldname + '-' + uniqueSuffix + ext);
        console.log(file)
    }
});
const upload = multer({ storage: storage })
NewsRouter.post("/adminapi/news/uploadimg", upload.single("file"), NewsController.uploadimg)

module.exports = NewsRouter
 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值