
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。
1.2 预览、压缩
支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。
解析jpeg中的meta信息,对于各种orientation做了正确的处理,同时压缩后上传保留图片的所有原始meta数据。
1.3 多途径添加文件
支持文件多选,类型过滤,拖拽(文件&文件夹),图片粘贴功能。
粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。
1.4 HTML5 &FLASH
兼容主流浏览器,接口一致,实现了两套运行时支持,用户无需关心内部用了什么内核。
同时Flash部分没有做任何UI相关的工作,方便不关心flash的用户扩展和自定义业务需求。
1.5 MD5秒传
当文件体积大、量比较多时,支持上传前做文件md5值验证,一致则可直接跳过。
如果服务端与前端统一修改算法,取段md5,可大大提升验证性能,耗时在20ms左右。
1.6 易扩展、可拆分
采用可拆分机制, 将各个功能独立成了小组件,可自由搭配。
采用AMD规范组织代码,清晰明了,方便高级玩家扩展。
2、引入资源
2.1 下载包内容
├── Uploader.swf // SWF文件,当使用Flash运行时需要引入。
├── webuploader.js // 完全版本。
├── webuploader.min.js // min版本
├── webuploader.flashonly.js // 只有Flash实现的版本。
├── webuploader.flashonly.min.js // min版本
├── webuploader.html5only.js // 只有Html5实现的版本。
├── webuploader.html5only.min.js // min版本
├── webuploader.withoutimage.js // 去除图片处理的版本,包括HTML5和FLASH.
└── webuploader.withoutimage.min.js // min版本
2.2 或者直接使用由staticfile提供的cdn版本,或者下载Git项目包。
// SWF文件,当使用Flash运行时需要引入。
├── http://cdn.staticfile.org/webuploader/0.1.0/Uploader.swf
// 完全版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.min.js
// 只有Flash实现的版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.min.js
// 只有Html5实现的版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.min.js
// 去除图片处理的版本,包括HTML5和FLASH.
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.js
└── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.min.js
2.3 DIY打包
WebUploader文件打包借助了Grunt工具来实现
2.3.1 环境依赖
1.git命令行工具
2.node &npm命令行工具
3.grunt (npm install grunt-cli -g)
2.3.2 编译代码
1.克隆 webuploader git仓库,git clone https://github.com/fex-team/webuploader.git。
2.安装node依赖,npm install。
3.执行grunt dist,此动作会在dist目录下面创建合并版本的js, 包括通过uglify压缩的min版本。
2.3.3 配置
打开webuploader仓库根目录下面的Gruntfile.js文件, 代码合并有buildtask来完成。找到build配置项。
Gruntfile.js已经配置了一个自定义合并的demo. 打包只支持HTML5的版本
// 自己配置的实例
// glob语法。
custom: {
preset: "custom",
cwd: "src",
src: [
'widgets/**/*.js',
'runtime/html5/**/*.js' ],
dest: "dist/webuploader.custom.js"
}
3、angular指令——<web-uploader>
3.1 指令功能
添加一个上传文件按钮,可以自行配置上传文件的类型和过滤规则,且在d出的模态框中进行 *** 作,支持连续上传,分类选择上传
3.2 使用说明
这里只是使用说明,可能会加一些注意事项,具体参数或者变量说明请参看后面
3.2.1 页面添加一个指令
<web-uploader class="btn btn-info" type="image" accept="accept">uploader</web-uploader>
3.2.2 配置上传类型和过滤规则
上传类型
type有四种类型,分别为
image:图片
video:音视频
flash:flash
file:办公文档,压缩文件等等
过滤规则
accept有四个对象属性,属性中包含标题、允许文件后缀、允许的mimetype
3.2.3 指令中绑定d出模态框的事件
web-uploader这个指令中其实只做了一件事,给元素本身绑定d出模态框的事件,具体上传文件是在模态框中完成的
3.2.4 初始化uploader类,配置相关属性
在模态框控制器中用到了$timeout
$timeout(function(){
//这里是上传配置代码
},0)
因为配置uploader时需要事先准备好dom元素,angular打开模态框是异步而JavaScript是单线程,所以实际上在执行模态框控制器中的代码时,模态框并没有打开,也就是dom并没有加载完成,这会导致WebUploader报a.runningtime is not a function...的错误
3.3 指令详细说明
3.3.1 父级controller中的配置
.controller('myCtrl',['$scope', '$modal', function($scope, $modal){
//配置允许上传的类型 图片/音视频/flash/文件
$scope.accept = {
//图片
image: {
title : 'Images',//标题
extensions : 'gif,jpg,jpeg,bmp,png,ico',//允许上传文件的后缀
mimeTypes : 'image/*'//允许的mimetype
},
//音视频
video: {
title : 'Videos',
extensions : 'wmv,asf,asx,rm,rmvb,ram,avi,mpg,dat,mp4,mpeg,divx,m4v,mov,qt,flv,f4v,mp3,wav,aac,m4a,wma,ra,3gp,3g2,dv,vob,mkv,ts',
mimeTypes : 'video/*,audio/*'
},
//flash
flash: {
title : 'Flashs',
extensions : 'swf,fla',
mimeTypes : 'application/x-shockwave-flash'
},
//办公文档,压缩文件等等
file: {
title : 'Files',
extensions : 'zip,rar,ppt,pptx,doc,docx,xls,xlsx,pdf',
mimeTypes : 'application/zip,application/x-rar-compressed,application/vnd.ms-powerpoint,application/vnd.openxmlformats- officedocument.presentationml.presentation,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms- excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/pdf'
}
}
}])
3.3.2 指令web-uploader
.directive('webUploader', ['$modal', function($modal){
return{
restrict: 'AE',
scope: {
accept: '=accept'
},
link: function($scope, $element, $attr){
$element.bind('click',function(){
var modalInstance = $modal.open({
controller: 'modalCtrl',
templateUrl: 'template/webuploader.tpl.html',
size:'lg',
resolve: {
items: function(){
return {
accept: $scope.accept,
type: $attr.type
}
}
}
})
modalInstance.result.then(function(returnStatus){
console.log(returnStatus)
},function(){
console.log('Modal dismissed at: ' + new Date())
})
})
}
}
}])
en英文
zh-CN中文
ja-jp日文
<!-- -- >注释
<p></p>分段
<br>强制换行
<ins></ins>下划线
<hr/>水平线
<strong></strong>强调突出内容
<em></em>强调倾斜内容
<del></del>删除线
<sub></sub>下际
<sup></sup>上际
&lt;大于号
&gt;小于号
&emsp;空格
&trade;TM
&reg;®
&copy;©
&amp;&
&yen;¥
&deg;摄氏度
color=""水平线颜色
width=""水平线宽度
align=""水平线方向,left左,right右
noshade="noshade"水平线默认阴影消除
<img src=" " alt=" ">
相对路径 ./ ../
绝对路径 去网络里找图片链接
./是找同级或下级图片
../是找上级图片
src=""引入图片链接
alt=""当图片出现问题,可以提示一段文字
title=""鼠标悬停信息
width=" px"设定图片宽度
height=" px"设定图片高度
<a href=""></a>
href=""链接的地址
tltle=""悬停提示信息
target=""填入网址
target=""里包含_blank和_self
_blank在浏览器新窗口打开页面
_self在浏览器原窗口打开页面
<img src=" alt">可以在图片里加链接
1.#号和id属性
在要跳转的文本位置前填上块元素,给块元素命名
<div id=""></div>
<a href="# "></a>
2.#号和name属性
在要跳转的文本位置前在写一个
<a name=" "></a>
<a herf="# "></a>
ul和li必须是组合出现的,他们之间是不能有其他标签的
<ul>
<li></li>
</ul>
<ul></ul>列表最外层容器
<li></li>列表项
type=""是改变前面标记样式(一般都是用css去控制 )
<ul type=""><li></li></ul>
disc是实心圆 circle是空心圆
square是实心方块 none是空白可以随意发挥
ol和li必须是组合出现的,他们之间是不能有其他标签的
<ol>
<li></li>
</ol>
<ol></ol>列表最外层容器
<li></li>列表项
type=""是改变前面标记样式(一般都是用css去控制
<ol type="" start=""><li></li></ol>
1是数字 a是小写字母 A大写字母 i罗马数字小写 I罗马数字大写
start=""从哪个数字开始(取值只能是数字)
<dl>
<dt></dt>
<dd></dd>
</dl>
<dl></dl>列表最外层容器
<dt></dt>定义专业术语或名词
<dd></dd>对名词进行解释和描述
<table></table>表格最外层容器
<tr></tr>定义表格行
<th></th>定义表头
<td></td>定义表格单元
<caption></caption>定义表格标题
border=""表格边框
cellpadding=""单元格内的空间
cellspacing=""单元格之间的空间
rowspan=""合并行
colspan=""合并列
align=""单元格文字左右对齐方式
align:left、center、right
valign=""单元格文字上下对齐方式
valign:top、middle、bottom
<form action="">
<input type="text">
</form>
<form></form>表单最外层容器
action=""提交到一个地址
<input>标签用于搜集用户信息,根据不同的type属性值,展示不同的控件
<input type="">
text普通文本密码框
password密码输入框
placeholdr提示文本
button自定义按钮
disabled禁用
readonly只读
submit提交按钮
hidden是给后端带信息普通用户看不见 一般伴随(value)
<input type="image"src="/ ">图片代替提交按钮
reset重置按钮
2.checkbox复选框
加上checked会出现一个默认选择
disabled禁止使用
3.radio单选框
name="(写一个自定义的值)"通过name可以让两个或多个单选框变为一组(自定义的值要相同)
加上checked会出现一个默认选择
4.file上传文件
multiple按住鼠标左键鼠标滑过可以多选
5.textarea多行文本框
<textarea cols="30" rows="10"></textarea>
cols=""表示列
rows=""表示行
可以通过调节行列改变大小
resize重新设置大小(css)
: vertical垂直
:horizontal水平
:both默认
:none无法控制
6. <select><option></option></select>
select下拉菜单
size=""填入数字可以让下拉菜单显示多项
multiple按住鼠标左键鼠标滑过可以多选
option菜单里的选项传给后端要设置value值
selected下拉菜单默认显示当前被选中的那一项
7. <label for=""></label>是一个辅助属性
id和for要相同
拿3.做例子
正常点这个文字是选不中的
<input type="radio" name="gender">男
<input type="radio" name="gender">女
但是用上label后就可以了
<input type="radio" name="gender" id="man"><label for="man">男</label>
<input type="radio" name="gender" id="girl"><label for="girl">女</label>
<fieldset><legend></legend></fieldset>
<legend></legend>缺口
1.<div></div>(块)用来划分区域
2.<span></span>(内联)对文字单独修饰
style=""设计
color颜色
<span style="color: "></span>
div和span都是没有任何默认样式的,需要配合css
<audio src=" " ></audio>
controls控制栏
loop循环
autoplay自动播放
muted静音
<video src=" "><video>
controls控制栏
loop循环
autoplay自动播放
muted静音
poster属性海报
section元素 表示页面中的一个内容区块(页面身体)
article元素 表示一块与上下文无关的独立的内容
aside元素 在article之外的,与article内容相关的辅助信息(侧边栏)
header元素 表示页面中一个内容区块或整个页面的标题(页面头部)
footer元素 表示页面中一个内容区快或整个页面的脚注(页面底部)
nav元素 表示页面中导游链接部分(页面导航栏)
figure元素 表示一段独立的流内容,使用figcaption元素为其添加标题(第一个获最后一个子元素的位置)
main元素 表示页面中的主要内容(ie不兼容)
<form></form>表单最外层容器
<form action=""></form>
action提交到一个地址
<input></input>标签用于搜集用户信息,根据不同的type属性值,展示不同的控件
<input type="">
加上name是给后端的
type="color"生成一个颜色选择的表单
type="email"生成一个邮箱输入框
type="tel"换起拨号盘表单
type="search"产生一个搜索意义的表单
type="range"产生一个滑动条表单,支持min,max,value,step
(min最小值)
(max最大值)
(value设置默认)
(step移动数值)
type="number"产生一个数值表单,支持min,max,value,step
type="email"限制用户必须输入email类型
type="url"限制用户必须输入url类型
type="date"限制用户必须输入日期
type="month"限制用户必须输入月类型
type="week"限制用户必须输入周类型
type="time"限制用户必须输入时间类型
type="datetime-local"选取本地时间
<input type="text" list="mylist">(list和id相连)
<datalist id="mylist">(id自定义)
<option value="手机"></option>(这个是列表可以想写多少写多少)
</datalist>
va lue自定义名称
autofocus自动获取焦点
required验证输入不能为空
multiple可以输入一个或多个值,每个值用逗号隔开
<input type="email" multiple/>还可用于file
pattern
将属性值设为某个正则表达式,在提交时会检查其内容是否合给定格式
<input pattern="[0-9][A-Z][3]" title="输入内容:一个数与三个大写字母" placeholder="输入内容:一个数与三个大写字母">
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)