webuploader插件,我踩得坑
我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用。
有一个项目需要做上传图片的功能,老大扔给我一个插件-webuploader。
然后上次做的现在需要改进重做一遍,所以我重新搞了一遍,顺便把踩得坑分享下来。
1.webuploader和其他插件使用一样,有个webuploader.css,webuploader.js,另外再加上一个文件Uploader.swf。所以再使用过程中要把插件的css和js引用一下。Uploader.swf用处在初始化中体现。
注意:我是在vue+webpack的环境下开发项目的,webuploader.css我是在js文件,通过require去引入。但是webuploader.js这个不能通过require去引用,否则会报错,所以webuploader.js我是在index.html中放在body的script标签中引入的,这样就不报错了。
2.uploader初始化。
初始化包含的信息蛮多,Uploader.swf的用处也在初始化中体现,初始化如下。
var uploader = WebUploader.create({
auto: true, // 选完文件后,是否自动上传
swf: 'js/Uploader.swf', // swf文件路径
server: 'upload.php', // 文件接收服务端
pick: '.choose_all', // 选择文件的按钮。可选
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: 'jpg,jpeg,png',
mimeTypes: 'image/jpg,image/jpeg,image/png'
},
thumb: {
type: 'image/jpg,jpeg,png'
},
fileNumLimit: 8, //限制上传个数
fileSingleSizeLimit: 2048000 //限制单个上传图片的大小
});
注:
a.关于选择图片文件,accept中的mimeTypes最好写明你规定的可以上传的文件类型:
mimeTypes: 'image/jpg,image/jpeg,image/png'
如果这部分你是这样写的:
mimeTypes: 'image/*'
那么很不幸的告诉你,你再点击上传图片的时候,页面半天不会有反应,然后过了好长时间才会蹦出弹窗。
b.限制上传单张图片文件大小,单位是B,1M=1024000B。
3.上面我也有说,我用的vue的template模板去写的,然后我有一个popup.vue的文件里面写的是弹窗的template,我本来想把弹窗的css直接写在template的下面,所以我也把我想的这么干了,如下:
<template>
<!--弹窗内容-->
</template>
<style scoped>
.webuploader-pick{width:100%;} /*.....其他css样式*/ </style>
然后后面需要修改webuploader带来的css的时候,没反应了,对,没反应,写的修改样式完全体现不出来,我找了好久怎么解决,结果!!!!我把template模板需要用到的css全部放在一个外部的css中,就像这样
<template>
<!--弹窗内容-->
</template>
<style scoped>
/*引入css*/
@import url("../css/popup.css");
</style>
然后就好了,真是无语了。好在解决了。
4.修改上传图片缩略图的大小,用js去控制,如下:
var uploadimgWidth = $('#uploadimg').width();
console.log(uploadimgWidth);
var thumbnailWidth = 0.235 * uploadimgWidth;
var thumbnailHeight = thumbnailWidth;
具体要改成多大的缩略图,大家依据自己的需求去变,可以是百分比,也可以是px,也可以是其他尺寸单位。
5.图片如果上传失败,需要删除上传失败的文件,代码如下:
uploader.removeFile(uploader.getFile(file.id));
uploader.onFileDequeued = function( file ) {
console.log(uploader.getFiles());
};
注:在操作的时候你会发现这个东西还存在,其实只不过是记录存在而已,已经删除了。不信你试试,可以上传删除后的文件。
6.图片不能作为上传按钮,不管是背景图片还是img写的图片,都不可以,大家可以试一下,我已经验证了N次。如果你把图片作为上传按钮,那么就会出现点击失效的问题,原因如下:

上传部分就会变成一个width和height只有1px的小点点,然后你根本不知道它在哪儿。
如果不得不把图片作为上传按钮,建议在图片外面再套一层标签,div也好,p也罢,都可以。
这个坑我都觉得不可理喻了,下面的坑更加不可理喻。
7.作为上传按钮的标签,如果这个标签上有display:none这个样式存在,辣么也会出现和图片作为上传按钮一样的问题。

上传部分又会变成一个width和height只有1px的小点儿。那么这个问题怎么解决了,也是困惑了我好久啊,在网上搜解决办法,功夫不负有心人啊,终于找到解决办法了:
uploader.refresh();
加上这么一句话,这个问题就解决了。
8.还有一个东西我今天分享一下。
我这边把图片数据上传到后台,然后后台会返回我数据,那么这个数据在哪个地方获取呢?如下:
uploader.on('uploadSuccess', function (file, response) {
console.log(response._raw); //这里可以得到后台返回的数据
$('#' + file.id).addClass('upload-state-done');
imgArr.push(response._raw);
});
response是个对象,如果服务器返回的是json格式,那么正和我们的意。如果不是json格式,response._raw里面可以拿到原始数据。所以,webuploader对于后端返回的数据格式是没有要求的。
webuploader插件,我踩得坑的更多相关文章
- 从零开始学 Java - Spring 支持 CORS 请求踩的坑
谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...
- Thinkphp拖拽上传文件-使用webuploader插件(自己改动了一些地方)——分片上传
html页面: <!DOCTYPE html> <html class="js cssanimations"> <head> <meta ...
- 谈谈调用腾讯云【OCR-通用印刷体识别】Api踩的坑
一.写在前面 最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想. 随后上网搜了一下OCR接口,就准备使用腾讯云.百度的OCR接口试一下效果.不过这个腾讯云 ...
- Asp.Net Core中使用Swagger,你不得不踩的坑
很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagge ...
- 360插件化Replugin爬坑之路
前言 继上次爬完了热修复的坑位,中途爬了各种各样的坑.今天我们来说说插件化Replugin的坑位.Replugin刚出的时候我就看过了.第一次看的时候可能心态不好.没看懂= =第二次重头在看,发现蛮简 ...
- python绘图踩的坑
踩的坑 pyecharts安装地图包 pip install echarts-countries-pypkg 报错Unknown or unsupported command 'install' 这可 ...
- 使用CCNode作为容器容易踩的坑
Cocos2dx中CCNode经常作为一个父容器,里面装一些UI控件,最后组成一个复杂的自定义的UI控件,但是在使用别人的自定义控件和自己写自定义问题的时候会踩一些坑. 首先拿到一个自定义的UI控件一 ...
- Composer安装php插件包中有哪些坑
Composer安装php插件包中有哪些坑 一.总结 一句话总结:不要盲从扩展官方的composer安装命令,有时候也会出错 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 ...
- java基础不牢固容易踩的坑
java基础不牢固容易踩的坑 经过一年java后端代码以及对jdk源码阅读之后的总结,对java中一些基础中的容易忽略的东西写下来,给偏爱技术热爱开源的Coder们分享一下,避免在写代码中误入雷区. ...
随机推荐
- final修饰的变量是引用不能变还是对象的内容不能变?
int a=1;此时a是变量: StringBuffer a=new StringBuffer();此时a就是引用变量,可以说是a引用String对象,通过a来操作String 对象 final St ...
- 蓝桥杯-比酒量-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 安装配置sentry服务
环境 系统环境:Centos6.7 Hadoop版本:CDH5.10 jdk版本:jdk7 注:本文并未集成kerberos组件 安装Sentry Server 选择安装hive的节点进行安装测试: ...
- 详解Java动态代理机制
之前介绍的反射和注解都是Java中的动态特性,还有即将介绍的动态代理也是Java中的一个动态特性.这些动态特性使得我们的程序很灵活.动态代理是面向AOP编程的基础.通过动态代理,我们可以在运行时动态创 ...
- 分针网—IT教育: jquery选择器的用法
jQuery选择器是jQuery库的一大特色,用这些选择器不但可以省去繁琐的JavaScript 书写方式,还可以节省时间和效率,正是有这些jQuery选择器,才让我们更容易的操作JavaScript ...
- 分针网—每日分享: 怎么轻松学习JavaScript
js给初学者的印象总是那么的"杂而乱",相信很多初学者都在找轻松学习js的途径. 我试着总结自己学习多年js的经验,希望能给后来的学习者探索出一条"轻松学习js之路& ...
- oracle AWR性能监控报告生成方法
目前相当一部分公司会用到oracle,在做性能测试的时候,对数据库的监控很重要,那么这里先介绍下如何生成oracle自带的awr监控报告,而具体报告的内容分析会放在后续的博客中 oracle性能分析入 ...
- 小谈ThinkPHP
ThinkPHP也是一个MVC框架,分视图.控制器和模型,和Yii框架相比相对较好理解,并且是轻量级的框架(相对于Yii来说),在使用Yii框架时候如果将框架放在项目文件中,用编辑器打开文件都比较慢, ...
- Object-C iOS纯代码布局 一堆代码可以放这里!
前言: 最近写的文章都是创业类,好吧,今天好好写写技术类的文章! 不过分享的不是IOS相关的文章,毕竟这几天在速成IOS,看的是object-c,由于速成的很快,好累! 好在现在基本已经入了点门道了, ...
- windows 上优雅的安装 node 和 npm
windows 的一键安装包,应该是最简单的 node 安装方式. 其实很多软件,拷贝过来就可以运行,根本不需要所谓的"安装"过程. 新建一个目录专门了管理 node 和 npm ...