不知道大家知不知道有一个**小黄鸭调试**,即在桌子上放一只小鸭子,如果遇到调试不好的bug了,就讲程序一行一行的解释给这个鸭子听(鸭子吗,当然得给它讲的足够仔细,它才能听懂啊),然后解释的过程中,你或许就能发现自己的程序问题。
![](https://box.kancloud.cn/2016-03-24_56f3c4af78c00.png)
因此,当你上传图片出错时,先去买个小鸭子,然后对着它讲下面的故事。
----
### 故事正式开始了
故事的主角可以是两个人(前端 & 后端),也可以是一个人(全栈)。
---
**序幕**
1. 如果你是一位初学者,对图片上传这回事儿一知半解,参见:http://www.kancloud.cn/wangfupeng/wangeditor2/129924
2. 你得确定你写的程序没有报任何的程序异常,如果有异常,请自己去查,本故事一概不管。
---
**第一集:**
根据[配置文档](http://www.kancloud.cn/wangfupeng/wangeditor2/113992)说明,要使用上传图片,肯定要为你的编辑器配置上传地址:
```js
var editor = new wangEditor('div1');
// 配置上传图片的地址
editor.config.uploadImgUrl = '/upload';
editor.create();
```
你只要配置了一个上传地址,无论这个地址是否正确,此时都会显示选择图片的按钮了。如果此时没有显示下图,或者点击按钮没法选择文档,请给作者提交issue(一定要说明是什么浏览器)。
![](https://box.kancloud.cn/2016-03-24_56f3c4ba34914.png)
---
**第二集**
接下来你要确定这个地址是正确的,而不是一个无效的地址。
事先打开chrome的开发者工具,windows系统`f12`键即可打开,定位到这里:
![](https://box.kancloud.cn/2016-03-24_56f3c4ba460cb.png)
运行编辑器页面,选择图片、上传,然后查看这里是的记录。如果如下图一样显示`404`,那就说明你这个地址是个空地址、无效地址。如果是这样的话,你就别继续往下看了,找后端开发者去要正确地址吧,要到了再重新进行这一步测试。
![](https://box.kancloud.cn/2016-03-24_56f3c4ba5bb72.png)
---
**第三集**
上文已经确定了上传图片的地址是有效的,但是此时可能还有错误。没关系,我们继续往下走。接下来你需要确定一下你的后台程序是否取到了前台传过去的图片。
先在后台程序中设置调试断点或者增加log记录,然后在前台选择图片、上传。然后根据调试断点和log记录来查看`request`中是否有信息如下的`file`(不同后台语言的查看语法不同,自己来写)
![](https://box.kancloud.cn/2016-03-24_56f3c4ba7389b.png)
以上截图,可以在chrome浏览器的开发者工具中看到。
*这里插一句,如果不知道后台如何查看`request`中的`file`信息,也不必再往下看了,先去搞明白这个知识*
如果能得到这个file,那就把这个file存储到服务器的某一个文件夹中。如果得不到,就不要再继续往下看了,先看看上面截图中的`request`中的信息,如果你的`request`信息不像截图中一样,请反馈给作者。
----
**第四集**
走到这里,就说明你得到了前台传来的图片,并且已经成功的存储到服务器的某一个文件夹。
接下来,我需要你给出一个`url`,让我在浏览器中输入这个`url`,然后回车,能得到刚才存储的图片,格式如`http://localhost:8011/uploadfiles/5168898981064558.jpeg`。如果你能成功给出这个图片的`url`,那就继续往下看,否则就不要继续了,想办法获取这个`url`。
![](https://box.kancloud.cn/2016-03-24_56f3c4ba9a132.png)
---
**第五集**
上文中得到了图片的`url`,然后在你的后端程序最后`response`出这个url即可了。`response`出来的信息应该能在这里看到
![](https://box.kancloud.cn/2016-03-24_56f3c4bab75f5.png)
*再插一句,如果不知道如何`response`出一个字符串,那就不要继续了,先去搞明白这个知识*
如果能正确`response`出图片地址,那么上传图片这个功能,应该就成功了。
---
**大结局**
最后解释一下上传图片时输出的`console.log`信息,有助于大家排查错误。
![](https://box.kancloud.cn/2016-03-24_56f3c4bacc5da.png)
上图中,第一块是上传之前的日志信息,包括使用什么方式、选择了什么文件、什么时候开始上传。这块的问题应该不会太多,都是编辑器的程序控制的,用户无需修改。
第二块,后面的`url`,是后台`response`出来的信息,上一集讲过了。因为要求`respone`出来的是一个图片地址,因此要将这个`url`插入到编辑区域,显示出图片来。
----
以上就是上传图片的整个过程,大家出错时,哪里有问题请对号入座,尽快解决!
- 关于wangEditor
- 遇到问题如何解决和提问【重要】
- 开始使用
- 下载
- 创建页面
- 生成编辑器(使用ID)
- 生成编辑器(使用element)
- 调整尺寸
- 销毁与恢复
- 一个页面多个编辑器
- 内容处理
- 初始化内容
- 获取内容
- 追加内容
- 清空内容
- 用 editor.$txt 做其他内容处理
- onchange事件
- 禁用/启用
- 参数配置
- 自定义菜单
- 自定义颜色、字体、字号
- 自定义表情
- 切换语言
- 百度地图key
- 菜单栏吸顶
- 配置全屏的z-index
- 关闭浏览器打印log
- 关闭过滤javascript
- 关闭粘贴过滤样式
- 只粘贴纯文本
- 插入代码-配置默认语言
- 自定义编辑器样式
- 自定义颜色
- 自定义菜单UI
- 自定义表格、引用、代码的样式
- 代码高亮样式
- 图片上传
- 使用前必读
- 支持情况
- 配置说明
- log提示辅助排错
- 后台代码示例
- C#
- java - 例1
- java - 例2
- php
- nodejs
- python
- 自定义上传事件
- 集成plupload插件
- 集成七牛云存储
- 跨域上传
- 上传图片出错时的解决步骤
- 使用模块定义
- 使用require.js
- 使用seajs
- 使用webpack
- 插件开发
- 对象结构
- 常用API
- 全局API
- 对象API
- 基础API
- 选区API
- 命令API
- 扩展一个菜单
- 『缩进』菜单
- 『行高』菜单
- 『插入符号』菜单
- 开发一个插件
- 常见问题
- 关于markdown
- 关于上传附件
- 关于背景图片
- 关于显示压缩图片
- 集成到React
- 集成到angular
- 集成到vue.js
- 如何避免与项目中的css冲突
- xss过滤
- 如何插入视频链接
- 关于mobile端编辑器
- 查看源码第一行有空格