wangEditor编辑器在laravel中上传图片(二)
这里接着上篇,上篇是关于wangEditor的简单实用。这篇主要是上传图片。
一、wangEditor上传图片的一些配置
博主这里使用的是laravel5.1框架,大家根据自己的框架调整就好。
1、上传图片的参数
var E = window.wangEditor;var editor1 = new E('#info1'); // 两个参数也可以传入 elem 对象,class 选择器//这里注意,下面的/news/upload是我的路由部分,主要是上传图片的后端代码editor1.customConfig.uploadImgServer = '/news/upload' ; // 上传图片到服务器//定义上传的filename,即上传图片的名称editor1.customConfig.uploadFileName = 'images';editor1.customConfig.showLinkImg = false;//开启wangEditor的错误提示,有利于我们更快的找到出错的地方editor1.customConfig.debug=true;editor1.create();
具体参考官方文档:https://www.kancloud.cn/wangfupeng/wangeditor2/113992
2、首先需要确认,点击上传图片之后,能够成功的进入你后端的方法。
二、后台部分
1、如果成功进入后台代码之后,先打印看看传过来的都是什么数据
var_dump($_FILES);exit;
浏览器显示:
array(1) {["images"]=>array(5) {["name"]=>string(5) "1.png"["type"]=>string(9) "image/png"["tmp_name"]=>string(22) "C:\Windows\phpB48F.tmp"["error"]=>int(0)["size"]=>int(13941)}
}
通过这段代码,我们可以知道,传过来的$_FILES是个数组。数组的第一项’images’就是我们上面设定的上传图片的名称。tmp_name是图片的临时存储路径。
2、laravel把图片上传到阿里OSS服务器上,并且返回图片路径
public function upload(Request $request){//获取临时存储路径$file = $_FILES["images"]["tmp_name"];//这里做个判断if (isset($_REQUEST["name"])) {$fileName = $_REQUEST["name"];} elseif (!empty($_FILES)) {$fileName = $_FILES["images"]["name"];}//给filename的名称加点料,更复杂一些$fileName = iconv('UTF-8', 'GB2312', $fileName);$content = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $fileName;//开启缓冲区。我这里开启缓冲区是因为阿里OSS图片上传,会强制性的返回一个'creatBucket:ok',这个东西对上传图片有一定的影响的,具体看下面解释。所以这边利用缓冲区给屏蔽掉ob_start();//这里是阿里OSS对象存储$bucket = Config::OSS_TEST_BUCKET;$accessKeyId = Config::OSS_ACCESS_ID;$accessKeySecret = Config::OSS_ACCESS_KEY;$endpoint = Config::OSS_ENDPOINT;$ossClient = Common::getOssClient();$object = "news/" . $content;$filePath = $file;//请记住,这个filepath是指向图片的路径,也是临时存储的路径$result = $ossClient->UploadFile($bucket, $object, $filePath);if (!$result) {exit("上传图片失败");}ob_clean();ob_end_flush();//这里拼接返回的格式$ret = [];$data[] = $result['info']['url'];$ret['errno'] = 0;$ret['data'] = $data;//请参考这里https://zhidao.baidu.com/question/535380282.html//关于返回值的格式:https://www.zhihu.com/question/65352371return json_encode($ret,JSON_UNESCAPED_SLASHES);}
解释:
(1)首先是获取图片的临时存储路径,这也是上传图片必须的,不然我们怎么把图片上传到服务器呢。
(2)开启缓冲区是为了保证这段代码最后的返回值只有wangEditor想要的返回值,这样上传图片才能成功。一旦有任何其他的返回值,上传图片就会不成功。这里划重点
关于缓冲区的用法:http://blog.csdn.net/LJFPHP/article/details/78839654
(3)关于阿里的OSS对象存储,大家有兴趣的话,可以参考我的另一篇博客:
http://blog.csdn.net/ljfphp/article/details/76407850
上传成功之后,我们可以拿到网络图片的路径:
(4)需要特别注意,wangEditor编辑器,对于返回值是很偏执的。必须按照它的格式来。这个部分浪费我很多时间,格式必须是:
//拼接出的JSON要类似于:
//这个errno:0是必须的,这样编辑器才会认为你上传成功
//图片路径部分是为了能在编辑器上显示
{"errno":0,"data":["/可读取你图片的路径.jpg"]}
(5)因为我们的图片路径少不了会有斜杠。这里返回的时候需要注意。傲娇的wangEditor是不会允许有任何反斜杠的存在的。我们在json格式化的时候,一定要注意。
防止json格式化时候转义:http://blog.csdn.net/LJFPHP/article/details/78839763
三、上传成功之后,我们的图片就会显示出来了
1、编辑器显示图片
如图:
2、数据库存储html标签代码
OK,这里就大功告成了。
四、总结下主要注意的问题
1、上传的图片名称最好不要是中文的。这个会有影响的,反正我这边上传中文名称的图片就会报错。
2、后台返回的时候,只能按照格式返回。其他的返回值一定要消除。楼主这里是借用缓冲区来消除其他返回值的。
3、json格式化的时候,注意不要把斜杠给转义了。
可能我这边写的也不够好,大家有意见可以提出来,一起学习。
end
wangEditor编辑器在laravel中上传图片(二)相关推荐
- php页面运用文本编辑器的实例,TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析...
本文实例讲述了TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法.分享给大家供大家参考,具体如下: 最近项目里要添加编辑器,以为CKeditor比较出名,所以研究了一下... 1.下载 ...
- laravel中上传图片并预览
(1)需要工具uploadify (2)需要uploadify文档一份(uploadify文档链接) (3)demo模仿 <tr><th>缩略图:</th>< ...
- wangeditor ajax,laravel 中 wangEditor 富文本编辑器使用指南
在本课程中,老师使用的富文本编辑器是 2.0 的版本,且输入区域使用的 textarea,但是在新的 3.0 版本中(新版本富文本编辑器只需要引用一个js文件即可),开发者不建议使用 textarea ...
- php 多图上传编辑器,laravel中使用WangEditor及多图上传
1. 创建项目及安装所需安装包 1.1 创建项目 composer create-project laravel/laravel=5.3 blog_wangeditor --prefer-dist 1 ...
- wangEditor编辑器中解析html图文信息问题(三)
以上两篇,我们主要记录了wangEditor编辑器的基础使用方法,以及上传图片部分.如果对前两篇有兴趣的,可以参考链接: http://blog.csdn.net/LJFPHP/article/det ...
- wangeditor:一个页面使用多个wangeditor编辑器,并对wangeditor进行组件封装以及上传图片到自己的服务器
wangeditor使用文档:https://www.kancloud.cn/wangfupeng/wangeditor3/332599 这里记录两个地方 1.如何在富文本编辑器中上传图片到自己的服务 ...
- 96微信编辑器如何将样式中的二维码替换成自己的?
现在我们编辑公众号时候,都会在后面放上公众号的二维码,引导客户识别关注.96微信编辑器上也有这样的功能,可以放很多个性样式的二维码.但是怎么替换成自己的二维码呢?这里教给大家一些. 一.在微信公众平台 ...
- 富文本编辑器 CKeditor 配置使用+上传图片
参考文献: 富文本编辑器 CKeditor 配置使用 CKEditor与CKFinder的配置(ASP.NET环境),老版本可以参考 CKEditor+CKFinder ASP版在本地电脑中的配置 ...
- summernote富文本中上传图片并保存到Oracle数据库的问题解决
文章目录 Summernote 问题一:Uncaught TypeError: $(...).summernote is not a function 问题二 :GET http://***/summ ...
最新文章
- 全文详解:「深度学习」如何协助处理医疗中的「数据难题」
- linux服务器上nginx日志访问量统计命令
- python 屏幕找图 点击_捕获屏幕并查找参考图像
- 把SQL Server 错误日志导出为EXCEL 并发送到指定的ftp 或者 共享盘
- c++判断数字是否为3的倍数的算法实现(附完整源码)
- 13.2.2 路由层——URL控制器
- matlab 矩阵数据生成.csv表格
- 摘要算法与加密(以MD5算法为例)
- python声明编码为gbk_Python字符串编码坑彻底详细解决
- java enumerator_NSEnumerator使用
- mac环境下配置gradle\maven
- 3.2 选择最可能的句子
- 世人都晓AI好 AI芯片知多少?
- 邮件服务器的渗透,渗透基础——从Exchange服务器上搜索和导出邮件
- 这些神奇 Bug,碰到真是让人目瞪狗呆!
- html中padding在ie8兼容性,怎么解决bootstrap在各版本IE浏览器中的兼容性问题?
- 失眠尽快入睡小妙招,这些助眠产品可以帮助睡眠
- 深度学习---人脸检测(勿喷)
- nginx: 405 not allowed问题解决方法
- POJ - 1651 Multiplication Puzzle (区间dp)
热门文章
- oracle手机号码检验字数_短信字数在线测试
- 人脸识别开源网络笔记
- insightface测试验证集
- implementation ‘com.zxy.android:recovery:
- pytorch维度统计
- pytorch 检索数组
- Python 进程之间共享数据(全局变量)
- win10 安装cuda黑屏解决
- c++ opencv imencode imdecode string转换
- OSError: [WinError 126] 找不到指定的模块/Could not find 'cudart64_90.dll'.