wangeditor使用方法,上传图片/视频到七牛云

官方首页:https://www.wangeditor.com/

官方文档:https://www.wangeditor.com/doc/

基本使用

使用方式

下载

可以使用npm安装也可以使用CDN进行连接

npm 安装 npm i wangeditor --save

CDN 链接 https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js

使用CDN js 外链引入
<div id="div1">
    <p>欢迎使用 <b>wangEditor</b> 富文本编辑器</p>
</div>

<!-- 引入 wangEditor.min.js -->
<script type="text/javascript">
    const E = window.wangEditor
    const editor = new E('#div1')
    // 或者 const editor = new E( document.getElementById('div1') )
    editor.create()
</script>
使用npm安装

在需要使用wangeditor的组建中进行引入

import E from "wangeditor";

然后再created函数中进行创建

//创建 
const editor = new E(this.$refs.editor);
//或者通过dom节点创建
//const editor = new E(document.getElementById('richText');


//初始化
editor.create()

html结构是

<template>
  <div>
    <div id="richText" ref="editor"></div>
  </div>
</template>

设置高度、z-index、配置placeholder

设置方式相同

在创建和初始化之前书写就可以

//创建 
const editor = new E(this.$refs.editor);
//或者通过dom节点创建
//const editor = new E(document.getElementById('richText');

      // 设置高度
      editor.config.height = 500;
      // 配置z-index
      editor.config.zIndex = 500;
      // 配置placeholder
      editor.config.placeholder = "自定义 placeholder 提示文字";
      // editor.config.placeholder = '' // 不想使用 placeholder ,赋值为空字符串即可


//初始化
editor.create()

一个页面多个编辑器

在一个页面上创建多个编辑器的时候,可以直接在new后面添加多个

const editor1 = new E('#div1', '#div2')
editor1.create()

const editor2 = new E('#div3')
editor2.create()

自动 focus

编辑器初始化时,默认会自动 focus 到编辑区域。可通过如下操作,取消自动 focus 。

如果只有一个富文本编辑可以直接忽略,如果有其他的就需要取消自动focus

const editor = new E('#div1')

// 取消自动 focus
editor.config.focus = false

editor.create()

自定义 alert

编辑器 customAlert 是对全局的alert做了统一处理,默认为 window.alert。

如觉得浏览器自带的alert体验不佳,可自定义 alert,以便于达到与自身项目统一的alert效果。

const editor = new E('#div1')
 // 自定义 alert
      editor.config.customAlert = function (s, t) {
        console.log("s, t", s, t);
        /**
         * s 是指 错误提示
         * t 是指 类型
         */
        _this.$message({
          type:t,
          message:s
        })
        
      };

editor.create()

数据回显

在使用wangeditor的时候,有可能会存在再次编辑情况,再次编辑就需要将之前的文本进行回显,回显使用一下代码

const E = window.wangEditor
    const editor = new E('#div1')
    editor.create()
    editor.txt.html(回显的变量) // 重新设置编辑器内容

配置菜单

基本上按照官方文档书写就可以

自定义菜单

editor.config.menus

使用 editor.config.menus 定义显示哪些菜单和菜单的顺序。

想要那些菜单就写上那些

 const E = window.wangEditor
    const editor = new E('#div1')

    // 配置菜单栏,删减菜单,调整顺序
    editor.config.menus = [
        'bold',
        'head',
        'link',
        'italic',
        'underline'
    ]

    editor.create()
editor.config.excludeMenus

使用 editor.config.excludeMenus 当只需剔除少数菜单的时候,直接设置不需要的菜单

不想要那些菜单就写上那些

 const E = window.wangEditor
    const editor = new E('#div1')

    // 配置菜单栏,设置不需要的菜单
    editor.config.excludeMenus = [
        'emoticon',
        'video'
    ]

    editor.create()

【注意】不要同时使用 editor.config.menuseditor.config.excludeMenus,以免引起冲突和混乱。

所有菜单

默认情况下会显示所有的菜单,配置如下:

// 默认情况下,显示所有菜单
editor.config.menus = [
    'head',
    'bold',
    'fontSize',
    'fontName',
    'italic',
    'underline',
    'strikeThrough',
    'indent',
    'lineHeight',
    'foreColor',
    'backColor',
    'link',
    'list',
    'todo',
    'justify',
    'quote',
    'emoticon',
    'image',
    'video',
    'table',
    'code',
    'splitLine',
    'undo',
    'redo',
]

配置颜色

编辑器的字体颜色和背景色,可以通过 editor.config.colors 自定义配置

字体颜色和背景颜色同时生效

const E = window.wangEditor
const editor = new E('#div1')

// 配置颜色(文字颜色、背景色)
editor.config.colors = [
    '#000000',
    '#eeece0',
    '#1c487f',
    '#4d80bf'
]

editor.create()

配置字体

编辑器的字体,可以通过 editor.config.fontNames 配置。

const E = window.wangEditor
const editor = new E('#div1')

// 配置字体
editor.config.fontNames = [
    //方式一
    // 对象形式 v4.6.16
    {name:"黑体",value:"黑体"},
    {name:"绝绝字体",value:"Times New Roman"}
    
    //方式二
    // 字符串形式
    '黑体',
    '仿宋',
    '楷体',
    '标楷体',
    '华文仿宋',
    '华文楷体',
    '宋体',
    '微软雅黑',
    'Arial',
    'Tahoma',
    'Verdana',
    'Times New Roman',
    'Courier New',
]

editor.create()

配置字号

编辑器的字号,可以通过 editor.config.fontSizes 配置。

const E = window.wangEditor
const editor = new E('#div1')

editor.config.fontSizes = {
    'x-small': { name: '10px', value: '1' },
    'small': { name: '13px', value: '2' },
    'normal': { name: '16px', value: '3' },
    'large': { name: '18px', value: '4' },
    'x-large': { name: '24px', value: '5' },
    'xx-large': { name: '32px', value: '6' },
    'xxx-large': { name: '48px', value: '7' },
}

editor.create()

【特别注意】上述配置中

  • key 的值(即 x-small small normal 等这些)不可改变,key 不可增加,只能减少。
  • value: '1 - 7' 也不可改变,也不可增加,只能减少。而且,valuekey 必须对应起来,例如 small 就必须对应 2

因此,上述配置中,你只能修改 name 。但修改之后,不会生效,还需要做一些调整。

'large': { name: '18px', value: '4' } 这个举例。 编辑器设置这个 font-size ,会生成 <font size="4">...</font> 。所以,你还需要增加下面的 css 代,让 size="4" 对应到 font-size: 18px;

font[size="4"] {
    font-size: 18px;
}

编辑器页面需要该 css ,回显页面也需要该 css 。

配置行高

编辑器的行高,可以通过 editor.config.lineHeights 配置。

const E = window.wangEditor
const editor = new E('#div1')

// 配置行高
editor.config.lineHeights = ['1', '1.15', '1.6', '2', '2.5', '3']

editor.create()

配置表情图标

通过 editor.config.emotions 可配置表情图标。表情菜单的 panel 中,支持多 tab 。

const SINA_URL_PATH = 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal'

const E = window.wangEditor
const editor = new E('#div1')

editor.config.emotions = [
    {
        title: '新浪', // tab 的标题
        type: 'image', // 'emoji' 或 'image' ,即 emoji 形式或者图片形式
        content: [
            { alt: '[坏笑]', src: `${SINA_URL_PATH}/50/pcmoren_huaixiao_org.png` },
            { alt: '[舔屏]', src: `${SINA_URL_PATH}/40/pcmoren_tian_org.png` },
            { alt: '[污]', src: `${SINA_URL_PATH}/3c/pcmoren_wu_org.png` },
        ]
    },
    {
        title: 'emoji',  // tab 的标题
        type: 'emoji', // 'emoji' / 'image'
        // emoji 表情,content 是一个数组即可
        content: '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐'.split(/\s/),
    }
]

editor.create()

配置全屏功能

配置属性

编辑器创建之前, 可以使用 editor.config.showFullScreen = true 来展示全屏功能按钮, 默认是true, 就是不加这个属性默认展示全屏功能按钮

注意:工具栏和编辑器区域分离的时候不支持全屏功能

<div id="div1">
    <p>欢迎使用 wangEditor 编辑器</p>
</div>

<!-- 引入 wangEditor.min.js -->
<script type="text/javascript">
    const E = window.wangEditor
    const editor = new E('#div1')

    // 配置全屏功能按钮是否展示
    editor.config.showFullScreen = true

    editor.create()
</script>

设置菜单栏提示

隐藏菜单栏提示

编辑器的菜单栏提示,可以通过 editor.config.showMenuTooltips 配置。

const E = window.wangEditor
const editor = new E('#div1')

// 隐藏菜单栏提示
editor.config.showMenuTooltips = false

editor.create()
设置菜单栏提示为上标还是下标

可以通过editor.config.menuTooltipPosition配置显示上标还是下标。

const E = window.wangEditor
const editor = new E('#div1')

// 菜单栏提示为上标(默认配置)
editor.config.menuTooltipPosition = 'up'

// 菜单栏提示为下标
// editor.config.menuTooltipPosition = 'down'

// 以上配置二选一

editor.create()

回调函数

onchange

配置 onchange 回调函数

配置 onchange 函数之后,用户操作(鼠标点击、键盘打字等)导致的内容变化之后,会自动触发 onchange 函数执行。

如果需要修改 onchange 触发的延迟时间( onchange 会在用户无任何操作的 xxx 毫秒之后被触发),可通过 onchangeTimeout 配置。更多信息请见 配置历史记录

const E = window.wangEditor;
const editor = new E("#div1");

// 配置 onchange 回调函数
editor.config.onchange = function (newHtml) {
  console.log("change 之后最新的 html", newHtml);
};
// 配置触发 onchange 的时间频率,默认为 200ms
editor.config.onchangeTimeout = 500; // 修改为 500ms

editor.create();

onSelectionChange

配置 onSelectionChange 回调函数

v4.7.5+版本支持

配置 onSelectionChange 函数之后,用户选区操作(鼠标选中文字,ctrl+a 全选等)会自动触发onSelectionChange 函数执行。

其中回调参数有 3 个是text,html,selection,分别为当前选择文本,当前选中的html,原生selection对象

const E = window.wangEditor;
const editor = new E("#div1");
// 配置 onSelectionChange 回调函数
editor.config.onSelectionChange = function (newSelection) {
  console.log("onSelectionChange", newSelection);
  /**
    {
       text:'wangeditor', // 当前选择文本
       html: '<p>wangeditor</p>', // 当前选中的html
       selection: selection, // 原生selection对象
    }
   */
};
editor.create();

onfocus 和 onblur

编辑区域 focus(聚焦)和 blur(失焦)时触发的回调函数。

在失焦的时候可以通过函数进行自动保存功能

const E = window.wangEditor
const editor = new E('#div1')

editor.config.onblur = function (newHtml) {
    console.log('onblur', newHtml) // 获取最新的 html 内容
}
editor.config.onfocus = function (newHtml) {
    console.log('onfocus', newHtml) // 获取最新的 html 内容
}

editor.create()

插入网络图片的回调事件

可以将插入的图片保存到自己的服务器,方式原地址的图片丢失

const E = window.wangEditor
const editor = new E('#div1')

// 插入网络图片的回调
editor.config.linkImgCallback = function (src,alt,href) {
    console.log('图片 src ', src)
    console.log('图片文字说明',alt)
    console.log('跳转链接',href)
}

editor.create()

应该是先检查图片然后在执行回调函数,执行顺序也是先检查在执行回调

插入网络视频的回调事件

插入网络图片的回调事件相同

使用 editor.config.onlineVideoCallback 可以自定义检查插入网络视频后的回调。

const E = window.wangEditor
const editor = new E('#div1')

// 自定义检查插入视频的回调
editor.config.onlineVideoCallback = function (video) {
  // 自定义回调内容,内容成功插入后会执行该函数
  console.log('插入视频内容', video)
}

editor.create()

内容检查

插入链接的校验

使用 editor.config.linkCheck 可以自定义检查插入的链接。

const E = window.wangEditor
const editor = new E('#div1')

// 自定义检查插入的链接
editor.config.linkCheck = function(text, link) {
    // 以下情况,请三选一

    // 1. 返回 true ,说明检查通过
    return true

    // // 2. 返回一个字符串,说明检查未通过,编辑器会阻止链接插入。会 alert 出错误信息(即返回的字符串)
    // return '链接有 xxx 错误'

    // 3. 返回 undefined(即没有任何返回),说明检查未通过,编辑器会阻止链接插入。
    // 此处,你可以自定义提示错误信息,自由发挥
}

editor.create()

插入网络图片的校验

使用 editor.config.linkImgCheck 可以自定义检查插入图片的链接。

const E = window.wangEditor
const editor = new E('#div1')

// 自定义检查插入图片的链接
// 参数中的imgSrc、alt、href分别代表图片地址、图片文本说明和跳转链接
// 后面两个参数是可选参数
editor.config.linkImgCheck = function(imgSrc,alt,href) {
    // 以下情况,请三选一

    // 1. 返回 true ,说明检查通过
    return true

    // // 2. 返回一个字符串,说明检查未通过,编辑器会阻止图片插入。会 alert 出错误信息(即返回的字符串)
    // return '图片 src 有 xxx 错误'

    // 3. 返回 undefined(即没有任何返回),说明检查未通过,编辑器会阻止图片插入。
    // 此处,你可以自定义提示错误信息,自由发挥
}

editor.create()

插入网络视频的校验

使用 editor.config.onlineVideoCheck 可以自定义检查插入网络视频的内容。

const E = window.wangEditor
const editor = new E('#div1')

// 自定义检查插入视频的链接
editor.config.onlineVideoCheck = function(video) {
    // 编辑器会根据返回的内容做校验:比如以下几种情况

    // 1. 返回 true ,说明检查通过
    return true

    // 2. 返回一个字符串,说明检查未通过,编辑器会阻止视频插入。会 alert 出错误信息(即返回的字符串)
    // return '插入的视频 有 xxx 错误'

    // 3. 返回 undefined(即没有任何返回),说明检查未通过,编辑器会阻止视频插入。
    // 此处,你可以自定义提示错误信息,自由发挥
}

editor.create()

粘贴过滤

关闭粘贴样式的过滤

【注意】本文不适用于 IE11

从其他地方(如网页、word 等)复制文本到编辑器中,编辑器会默认过滤掉复制文本的样式,这样可以让编辑器内容更加简洁。因为复制过来的文本样式,可能会比较混乱,且不可控。

true表示采用过滤(格式化),false表示不采用过滤(格式化)

可通过设置 editor.config.pasteFilterStyle = false关闭样式过滤

忽略粘贴内容中的图片

上传粘贴的图片后面具体说

【注意】本文不适用于 IE11

从其他页面(如网页、word 等)复制过来的内容,除了包含文字还可能包含图片,这些图片一般都是外域的(可能会有防盗链处理,导致图片不显示)。

可以通过配置 editor.config.pasteIgnoreImg = true忽略粘贴的图片。如果复制的内容有图片又有文字,则只粘贴文字,不粘贴图片。

自定义处理粘贴的文本内容

【注意】本文不适用于 IE11

使用者可通过 editor.config.pasteTextHandle 对粘贴的文本内容进行自定义的过滤、处理等操作,然后返回处理之后的文本内容。编辑器最终会粘贴用户处理之后并且返回的的内容。

可以通过这个函数检测是否具有敏感文字

const E = window.wangEditor
const editor = new E('#div1')

// 配置粘贴文本的内容处理
editor.config.pasteTextHandle = function (pasteStr) {
    // 对粘贴的文本进行处理,然后返回处理后的结果
    return pasteStr + '巴拉巴拉'
}

editor.create()

上传图片

默认情况下不显示上传之有连接图片,连接图片就是将图片地址和alt文本输入即可。

上传图片分为base64保存、上传到自己的服务器一级其他OSS存储,其他看官网

base64保存
 // base64 保存图片
editor.config.uploadImgShowBase64 = true

这样就直接将图片的base64保存到代码中,但是代码量可能会很长

上传到自己的服务器

如果想完全自己实现图片上传的过程,如上传图片到某个云服务器,可以使用如下代码。

editor.config.customUploadImg = function (resultFiles, insertImgFn) {
    // resultFiles 是 input 中选中的文件列表
    // insertImgFn 是获取图片 url 后,插入到编辑器的方法

    // 上传图片,返回结果,将图片插入到编辑器中
    insertImgFn(imgUrl)
}

以上是官方代码,在函数体中可以获取接口进行传递,需要注意的是resultFiles是一个数组

//上传到服务器
editor.config.customUploadImg = function (resultFiles, insertImgFn) {
// resultFiles 是 input 中选中的文件列表
// insertImgFn 是获取图片 url 后,插入到编辑器的方法
    
    //这是一个全局方法,将图片转成base64
_this.GlobalMethod.getBase64(resultFiles[0]).then((res) => {
  let params = {
    img: res,//base64文件
    name: "article",//文件夹名称
    classify: "article",//分类
  };
    //将base64传递给后端
  _this.Post(_this._URL.upBase64Img, params).then((res) => {
    if (res.code == "000000") {
      // 上传图片,返回结果,将图片插入到编辑器中
      // insertImgFn(imgUrl)
        //后端返回全路径地址
      insertImgFn(res.data);
    } else {
      _this.$message.error(res.message);
    }
  });
});
};

我的方法是将图片转成base64,将base64传递给后端php进行保存

getBase64方法

// 将图片转成base64
/**
 * @param {图片参数} file 
 * @returns  返回的是base64编码
 */
export const getBase64 = (file) => {
	return new Promise(function (resolve, reject) {
		let reader = new FileReader();
		let imgResult = "";
		reader.readAsDataURL(file);
		reader.onload = function () {
			imgResult = reader.result;
		};
		reader.onerror = function (error) {
			reject(error);
		};
		reader.onloadend = function () {
			resolve(imgResult);
		};
	})
}

后端php接口

<?php
/*
 * @描述: 图片上传接口-base64单张上传
 * @版本: 
 * @Author: lzb
 * @Date: 2021-12-09 17:38:42
 * @LastEditors: lzb
 * @LastEditTime: 2021-12-13 14:29:25
 * @FilePath: \serve\other\uploadImg\upBase64Img.php
 */

    header("Content-type: text/html; charset=utf-8"); 
    header('Access-Control-Allow-Origin:http:*');

 // 引入base64图片保存函数
include_once '../methods/base64Img.php';

// 接受前端传递的数据
$img = $_POST['img'];//base64图片
$name = $_POST['name'];//图片名称
$classify = $_POST['classify'];//存储类型

// 图片保存总目录
  define("WWWROOT",str_ireplace(str_replace("/","\\",$_SERVER['PHP_SELF']),'',__FILE__)."\\");
   $path = WWWROOT  . "imagess/";//服务器地址,图片地址

/**
 $img   base64图片信息
 $path  图片目录
 $name  图片名称
 $classify  图片存储分类
 $imgAddress   是一个数组,得到图片本地地址和url地址
 */
// 注意 如果是多张的话就需要调用多次函数,
$imgAddress = base64_image_content($img,$path,$name,$classify);
// echo json_encode($im1);
$imgSize = $imgAddress['0'];//本地地址
$imgUrl = $imgAddress['1'];//url地址
// echo $imgSize;
// 判断是否有值并进行返回
if(file_exists($imgSize)){
  echo json_encode(array(
    "message" => "上传成功",
    "code" => '000000',
    "data" => $imgUrl
));
}else{
  echo json_encode(array(
    "message" => "上传失败",
    "code" => '000001',
));
}

注意点:

  • 在上传之前需要在上传位置创建文件夹
上传到七牛云

由于我的服务器比较小,经常上传图片会造成卡顿,因此将图片上传到七牛云进行保存

在wangeditor v3版本可以直接上传到七牛云,但是在v4版本没法直接上传,需要通过自己进行实现

在使用七牛云的时候需要将qiniu-js安装并引入进入

//npm install qiniu-js
import * as qiNiu from "qiniu-js";
// 上传到七牛云
editor.config.customUploadImg = function (resultFiles, insertImgFn) {
  console.log("resultFiles", resultFiles);
  // resultFiles 是 input 中选中的文件列表
  // insertImgFn 是获取图片 url 后,插入到编辑器的方法
  //有可能会上传多张图片,上传多张图片就需要进行遍历
  resultFiles.map((item) => {
    // _this.getUploadImg(item, insertImgFn);
    _this.getUploadFile(item, insertImgFn);
  });
};

在这里使用了getUploadFile函数,在函数中需要先获取七牛云的token,然后配置config等信息,上传完成之后会收到文件名称,将文件名称和七牛云绑定的域名连接即可,参考七牛云js SDK编写

// 上传图片/视频到七牛云
getUploadFile(file, Rendering) {
  // 获取七牛云的token
  this.Get(this._URL.createdqiniu).then((res) => {
    this.QiniuData.token = res;

      //配置信息
    var config = {
      useCdnDomain: true, //表示是否使用 cdn 加速域名,为布尔值,true 表示使用,默认为 false
      region: qiNiu.region.z1, //选择上传域名区域;当为 null 或 undefined 时,自动分析上传域名区域
      /**qiniu.region.z0: 代表华东区域
          qiniu.region.z1: 代表华北区域
          qiniu.region.z2: 代表华南区域
          qiniu.region.na0: 代表北美区域
          qiniu.region.as0: 代表东南亚区域
      */
    };

      //额外的信息
    var putExtra = {
      fname: "",//文件原文件名
    params: {},//object,用来放置自定义变量
    mimeType: null // null || array,用来限定上传文件类型,指定null时自动判断文件类型
    };



let suffix = file.name.substring(file.name.lastIndexOf(".") + 1); //获取后缀
      
    // 设置唯一的文件名
    const key =
      new Date().getTime() +
      Math.random().toString().substr(2, 5) +
      "." +
      suffix;

/**
     * file: Blob 对象,上传的文件
     * key: 文件资源名
     * token: 上传验证信息,前端通过接口请求后端获得
     * config: object
     * putExtra
     */
      const observable = qiNiu.upload(
      file,
      key,
      this.QiniuData.token,
      putExtra,
      config
    );
// 文件上传
    var observer = {
    //  正在上传 接收上传进度信息
    next(res) {
        // 上传进度  parseInt(res.total.percent)
          console.log("next-res",res, parseInt(res.total.percent))
        // if(parseInt(res.total.percent)==100){
        //     console.log("success")
        // }
    },
    // 接收上传错误信息
    error(err) {
      this.$message.error('文件上传失败')
      console.log(err)
    },

    // 接收上传完成后的信息
    complete(res) {
        //  console.log("complete-res", res)
          Rendering("http://updatafiles.ybrecord.cn/" + res.key);
    }
  };
  var subscription = observable.subscribe(observer); // 上传开始

  });
},

上传视频

上传视频和上传图片基本上一样

只是所用函数不同

如果想完全自己实现视频上传的过程,如上传视频到某个云服务器,可以使用如下代码。

editor.config.customUploadVideo = function (resultFiles, insertVideoFn) {
    // resultFiles 是 input 中选中的文件列表
    // insertVideoFn 是获取视频 url 后,插入到编辑器的方法

    // 上传视频,返回结果,将视频地址插入到编辑器中
    insertVideoFn(videoUrl)
}

PS:配置自定义插入视频 editor.config.customInsertVideo 也可以在这里起作用。

我的代码同样是上传到七牛云

// 上传视频
      editor.config.customUploadVideo = function (resultFiles, insertVideoFn) {
      console.log("resultFiles, insertVideoFn", resultFiles, insertVideoFn)
          // resultFiles 是 input 中选中的文件列表
          // insertVideoFn 是获取视频 url 后,插入到编辑器的方法
       _this.getUploadFile(resultFiles[0], insertVideoFn);
          // 上传视频,返回结果,将视频地址插入到编辑器中
          // insertVideoFn(videoUrl)
      }

以上是我所用的wangeditor方法级属性,其他请看官网

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 答:``` <!DOCTYPE html> <html> <head> <title>Layui上图片到七牛云</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="demo1"> <p id="demoText"></p> </div> </div> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.15/qiniu.min.js"></script> <script> //获取七牛上凭证 $.get("你的获取七牛上凭证接口", function (data) { var token = data.token; var config = { useCdnDomain: true, region: qiniu.region.z2 }; var putExtra = { fname: "", params: {}, mimeType: ["image/png", "image/jpeg", "image/gif"] }; var observer = { next(res){ console.log(res) }, error(err){ console.log(err) }, complete(res){ console.log(res); } } var observable = qiniu.upload(file, key, token, putExtra, config); var subscription = observable.subscribe(observer); // 上开始 //取消上 //subscription.unsubscribe(); }); </script> </body> </html> ``` ### 回答2: 使用Layui和七牛云上图片的代码如下: 首先,确保在页面中引入Layui和七牛云SDK的相关文件: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.23/qiniu.min.js"></script> ``` 然后,在HTML中创建一个用于上图片的按钮和一个用于显示图片预览的区域: ```html <input type="file" name="image" id="upload"> <div id="preview"></div> <button class="layui-btn" lay-submit lay-filter="upload">上图片</button> ``` 接下来,在JavaScript中编写Layui的代码,包括上图片和显示预览图片的逻辑: ```javascript layui.use(['form'], function(){ var form = layui.form; // 初始化七牛云的参数 var uploader = Qiniu.uploader({ runtimes: 'html5', browse_button: 'upload', uptoken_url: '/your/uptoken/url', // 请求服务器获取上凭证的URL domain: 'http://your-qiniu-domain.com', // 七牛云的空间域名 get_new_uptoken: false, auto_start: false, unique_names: true, filters: { mime_types: [ {title: "Image files", extensions: "jpg,jpeg,png"} ] }, init: { FileUploaded: function(up, file, info) { // 上完成后,将图片的URL添加到预览区域 var imageUrl = up.getOption('domain') + '/' + file.name; $('#preview').append('<img src="' + imageUrl + '">'); } } }); // 监听上按钮的点击事件 form.on('submit(upload)', function(){ // 清空预览区域的内容 $('#preview').empty(); // 开始上图片 uploader.start(); // 阻止表单的默认提交行为 return false; }); }); ``` 其中,`uptoken_url`是服务器端用于获取上凭证的接口URL,需要根据实际情况进行配置。 通过以上代码,当用户选择图片文件并点击上按钮时,会将图片到七牛云,并将上完成后的图片在预览区域进行显示。 ### 回答3: 使用 layui 上图片到七牛云的代码如下: HTML部分: ```html <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上图片</button> <input type="hidden" id="qiniuToken" value="" /> <input type="hidden" id="qiniuDomain" value="" /> <div class="layui-upload-list"> <img class="layui-upload-img" id="uploadImage"> <p id="uploadText"></p> </div> </div> ``` JavaScript部分: ```javascript layui.use('upload', function(){ var upload = layui.upload; // 初始化七牛云参数 var qiniuToken = ''; // 七牛云上凭证 var qiniuDomain = ''; // 七牛云上域名 // 获取七牛云上凭证和域名 // 这一部分需要在后端获取,并且将值填入上面的两个变量 // 创建上实例 var uploadInst = upload.render({ elem: '#upload', // 上按钮的id url: qiniuDomain, // 七牛云上域名 headers: { 'Authorization': 'UpToken ' + qiniuToken // 添加七牛云上凭证 }, done: function(res){ // 上完毕回调 console.log(res); if(res.code === 0){ $('#uploadImage').attr('src', res.data.src); // 将上成功的图片显示在页面上 $('#uploadText').text('上成功'); } else { $('#uploadText').text('上失败'); } }, error: function(){ // 请求异常回调 $('#uploadText').text('上失败'); } }); }); ``` 这是一个使用 layui 框架的图片功能,使用了 layui 的 upload 模块来实现图片功能。首先需要在 HTML 中设置上按钮的id,然后引入 layui 的 upload 模块并初始化实例。在 JavaScript 部分,我们通过获取七牛云的上凭证和域名,将其填入相应的变量中。然后在创建上实例时,设置上按钮的id、七牛云上域名和上凭证等参数,以及上成功和失败的回调函数用于处理上结果。上按钮被点击后,会触发上操作,上成功后通过回调函数将上成功的图片显示在页面上。 以上代码仅为示例,需要根据具体的七牛云配置进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端小小的少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值