【前后端分离】mavon-editor图片上传删除以及回显

图片上传

图片上传网上都有相关教程这里就不做过多介绍,贴一下我自己的上传代码:

$imgAdd(pos, $file) {
      var formdata = new FormData()
      formdata.append('image', $file)
      //upload这里请自行修改成自己的上传方式
      upload(formdata)
        .then(res => {
          const url = res.message
          this.$refs.md.$img2Url(
            pos,
            url
          )
        })
        .catch(res => {
          console.log(res)
        })
    }

图片删除

图片删除网上看了大部分教程都是删除的缓存里的图片,实在是太坑了,官网也是,只有关于图片上传的教程。所以自己研究了一下,想到了一个办法在删除图片的同时把后台存的图片也删了,重点就是官网教程中提供的pos参数,这里可以看一下pos参数在图片上传时和删除时的值

上传图片时

在这里插入图片描述pos结果是1,原因研究的可以自行研究,实际上这里的pos指的是在数组中的下标

删除图片时

在这里插入图片描述删除图片时居然是个数组,坑啊!不过知道是个数组就好办了,直接pos[0]取出文件路径,然后传给后端删除后台的文件就可以了,这里后台代码就不贴了,贴一下前端代码

$imgDel(pos) {
      var formdata = new FormData()
      formdata.append('url', pos[0])
      delfile(formdata)
        .then(() => {
          Message.success('删除成功')
        })
        .catch(res => {
          console.log(res)
        })
    }

内容回显

这个在网上不是通过把mavon-editor的其他屏蔽只留下预览界面就是使用其他插件来回显,这都太麻烦了,实际上mavon-editor内置了markdown-it,获取方式可以去github上查看:github链接markdown-it用兴趣的可以了解一下,获取到markdown-it实例后用它提供的render函数即可回显文章
这里贴一下我的代码片段:

<!--html-->
<div v-html="content"></div>
<!--js-->
computed: {
    content: function () {
      let markdownIt = mavonEditor.markdownIt
      return markdownIt.render(this.mdContent)
    }
  }
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
首先,在前端使用 mavon-editor 上传图片,需要将图片转换为 base64 编码的字符串,然后将其作为参数传递给后端。可以通过 FileReader 对象实现图片转换为 base64 编码的字符串,代码如下: ```javascript // 选择图片并读取 let file = e.target.files[0] let reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => { let imgBase64 = reader.result // 图片base64编码字符串 // 将base64编码字符串传递给后端 axios.post('/upload-image', { imgBase64 }).then(res => { // 处理回显 // ... }) } ``` 在后端使用 Express 接收图片,并将其写入服务器本地。可以使用 `fs` 模块的 `writeFile()` 方法实现文件写入,代码如下: ```javascript const fs = require('fs') app.post('/upload-image', (req, res) => { let imgBase64 = req.body.imgBase64 // 去除data:image/png;base64,前缀 let base64Data = imgBase64.replace(/^data:image\/\w+;base64,/, '') // 将base64编码转换为buffer对象 let imgBuffer = new Buffer.from(base64Data, 'base64') // 写入文件 let filename = Date.now() + '.png' // 设置文件名,避免重复 fs.writeFile(filename, imgBuffer, err => { if (err) { res.send({ code: 500, msg: '写入文件失败' }) } else { res.send({ code: 200, msg: '上传成功' }) } }) }) ``` 最后,在前端处理回显。可以使用 mavon-editor 的 `afterUpload` 回调函数,接收后端返回的图片地址,并将其插入到编辑器中,代码如下: ```javascript <template> <div> <mavon-editor v-model="content" @after-upload="afterUpload" ></mavon-editor> </div> </template> <script> export default { data() { return { content: '' // 编辑器内容 } }, methods: { // 图片上传后回调 afterUpload(info) { if (info.code === 200) { let imgUrl = 'http://localhost:3000/' + info.filename // 图片地址 let str = `![${info.filename}](${imgUrl})` // Markdown图片语法 this.content += str // 将图片插入到编辑器中 } else { console.log(info.msg) } } } } </script> ``` 在上面的代码中,`afterUpload` 回调函数接收后端返回的信息,如果上传成功,则将图片地址和 Markdown 图片语法组合成字符串,插入到编辑器中进行回显。否则,输出错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值