若依项目form表单过大报错Failed to execute ‘setItem’ on ‘Storage’: Setting the value of ‘sessionObj’ exceeded t

quillEditor实现粘贴图片上传服务器

若依项目,富文本上传报错:Failed to execute ‘setItem’ on ‘Storage’: Setting the value of ‘sessionObj’ exceeded the quota.

在这里插入图片描述

问题:前端request.js中 防止表单重复提交方法 当提交data大于5M时

解决办法1(不推荐):

1.最直接的办法====>干掉表单重复提交验证
2.大数据内容防止重复提交在后端处理,不在前端处理
3.前端单独配置请求repeatSubmit属性

在这里插入图片描述

解决办法2(推荐):

form表单大小超过5Mb的应该很少吧,得有多少参数才能超过5Mb,除非有文件(如图片一base64上传),问题就在这,将图片转为url就好了

quillEditor实现粘贴图片上传服务器,存储图片src非base64

解决办法就是,给富文本编辑器加一个粘贴的监听事件。
判断如果粘贴图片了,把文件上传到后台服务器

给富文本编辑器加一个粘贴的监听事件

在这里插入图片描述

 <el-upload
      :action="uploadUrl"
      :before-upload="handleBeforeUpload"
      :on-success="handleUploadSuccess"
      :on-error="handleUploadError"
      name="file"
      :show-file-list="false"
      :headers="headers"
      style="display: none"
      ref="upload"
      v-if="this.type == 'url'"
    >
    </el-upload>
    <div
      class="editor"
      ref="editor"
      :style="styles"
      @paste="onPaste($event)"
    ></div>

然后在methods里面写实现方法

在这里插入图片描述

   /**监听富文本编辑器的粘贴事件  针对图片进行操作 */
    onPaste(evt) {
      // 获取解析 粘贴的内容
      //先判断粘贴的内容是否是图片
      console.log(evt);
      if (
        evt.clipboardData &&
        evt.clipboardData.files &&
        evt.clipboardData.files.length
      ) {
        evt.preventDefault();
        [].forEach.call(evt.clipboardData.files, (file) => {
          if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
            return;
          }
          const formData = new FormData();
          formData.append("file", file);
          //带请求头过验证
          const config = {
            headers: {
              Authorization: "Bearer " + getToken(),
            },
          };
          // `${process.env.VUE_APP_BASE_API}/system/oss/upload`,
          axios
            .post(
              `${process.env.VUE_APP_BASE_API}/system/oss/upload`,
              formData,
              config
            )
            .then((res) => {
              console.log(res);
              if (res.data.code == 200) {
                console.log(res.data.data.fileName);
                let length = this.Quill.getSelection().index; //光标位置
                // 插入图片地址
                this.Quill.insertEmbed(length, "image", res.data.data.url);
                // 光标后移一位
                this.Quill.setSelection(length + 1);
              } else {
                this.$message({
                  message: res.data.msg,
                  type: "warning",
                });
              }
            });
        });
      }
    },
  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值