php-使用wangeditor实现富文本(完成图片上传)-npm

官网参考连接:快速开始 | wangEditor

样式:

一、新建一个临时文件夹test1和一个文件夹wangeditor

  • 临时文件夹test1:临时存放通过npm下载的文件
  • 文件夹wangeditor:用于存放在临时文件夹test1拷贝的css和js

二、安装 editor

在确保有npm环境的情况下,在终端安装editor

npm install "@wangeditor/editor" --save

调出终端运行npm install "@wangeditor/editor" --save

安装完成的test1目录

三、找到安装文件中的css和js文件,进行拷贝

目录

将css和js文件拷贝到文件夹wangeditor

四、选择删除临时文件夹test1

五、代码

前端代码

html 复制代码
<tr>
    <td><span style="color:red">*</span>内容</td>
    <td colspan="20">
        <!--引入富文本编辑器-->
        <div id="editor---wrapper" name="editor---wrapper">
            <div id="toolbar-container"><!-- 工具栏 --></div>
            <div id="editor-container"><!-- 编辑器 --></div>
        </div>
    </td>
</tr>

引入富文本编辑器样式

html 复制代码
<link href="api/wangeditor/style.css" rel="stylesheet">
<style>
  #editor---wrapper {
      border: 1px solid #ccc;
      z-index: 100;
      /* 按需定义 */
  }
  #toolbar-container {
      border-bottom: 1px solid #ccc;
   }
  #editor-container {
      height: 500px;
  }
</style>

引入js

html 复制代码
<script src="api/wangeditor/index.js"></script>
<script>
	var html; //设置一个变量
	const {
		createEditor,
		createToolbar
	} = window.wangEditor
	//编辑器配置
	const editorConfig = {
		// MENU_CONF: {},
		withCredentials: true, //定义该属性为ture表示允许跨域访问
		autofocus: false,
		scroll: false,
		maxLength: 1200,
		minLength: 200,
		placeholder: '请输入文本内容', //默认文字
		onChange(editor) { //当编辑器中发生改变时,获取最新html代码输出
			html = editor.getHtml() //获取HTML内容,editor.getText()是获取纯文本内容
			console.log('editor content', html)
			//将html的值赋值给id为
			document.getElementById('neirong').value = html;
			// // 也可以同步到 <textarea>
		}
	}
	editorConfig.MENU_CONF = {}; //确保 editorConfig.MENU_CONF 对象被正确地初始化
	editorConfig.MENU_CONF['uploadImage'] = {
		// 上传图片的配置
		server: 'api/demo.php',
		fieldName: 'file',
		maxFileSize: 6 * 1024 * 1024,
		maxNumberOfFiles: 200,
	}

	//创建编辑器
	const editor = createEditor({
		selector: '#editor-container',
		html: '<p><br></p>',
		config: editorConfig,
		mode: 'default', // or 'simple'
	})
	//工具栏配置
	const toolbarConfig = {}

	// toolbar.getConfig().toolbarKeys
	//隐藏视频上传功能
	toolbarConfig.excludeKeys = [
		'group-video'
	]
	//创建工具栏
	const toolbar = createToolbar({
		editor,
		selector: '#toolbar-container',
		config: toolbarConfig,
		mode: 'default', // or 'simple'
	})
</script>

后端接口完成上传图片的功能实现

php

在当前目录中的接口文件夹api中,创建文件demo.php

对用script中的的server: 'api/demo.php',//连接到接口文件,执行数据上传功能

代码

php 复制代码
 <?php 
    // //图片文件的生成
    $savename = date('YmdHis',time()).mt_rand(0,9999);//生成随机数作为图片名称
    $imgdirs = "../image/".date('Y-m-d',time()).'/';//文件夹名称(/upload/image/日期/)
    mkdirs($imgdirs);//创建$imgdirs文件夹
    //获取图片文件的名字
    $fileName = $_FILES["file"]["name"];
    // //获取图片类型
    $file_type = $_FILES["file"]["type"];
    $type = '';
    //判断是否是图片
    switch ($file_type) {
    case 'image/png':
        $type = '.png';
        break;
    case 'image/gif':
        $type = '.gif';
        break;
    case 'image/jpeg':
        $type = '.jpg';
        break;
    }
    //图片保存的路径
    $savepath = $imgdirs.$savename.$type; // upload.php文件在api文件夹里,upload文件夹和api文件夹同级
    //生成一个URL获取图片的地址
    $url = "http://自己服务器的域名或者ip/feiyoute" . str_replace('..','',$savepath); //线上地址
    // $url = "http://localhost/my-blog/upload/" . $savename.$type; // 本地地址
    // 临时文件移动到指定文件夹
    $rs = move_uploaded_file($_FILES["file"]["tmp_name"],$savepath);
    if($rs) {
        $data['url'] = "{$url}";
        $data["alt"] = $fileName;
        $data["href"] = "{$url}";
        $result=array('errno'=>0,'data'=>array($data));//输出特定样式
        echo json_encode($result);
        } 
    else {
        $result=array('errno'=>1,'message'=>'失败信息');
        echo json_encode($result);
    }
    //创建文件夹 权限问题
    function mkdirs($dir, $mode = 0777){
        if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
        if (!mkdirs(dirname($dir), $mode)) return FALSE;
        return @mkdir($dir, $mode);
    }
?>

输出的格式必须按照官网给出的样式才行

案例

相关推荐
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅4 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊4 小时前
jwt介绍
前端
爱敲代码的小鱼4 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte5 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc