plupload文件上传插件
一 资源文档
二 基本使用
三 可能遇到的问题
一 资源文档
Git仓库地址:https://github.com/moxiecode/plupload
一个中文速查:http://www.cnblogs.com/2050/p/3913184.html
可能有用的demo: http://chaping.github.io/plupload/demo/index.html
二 基本使用
html:
<ul id="filelist"></ul>
<br />
<div id="container">
<a id="browse" href="javascript:;">[Browse...]</a>
<a id="start-upload" href="javascript:;">[Start Upload]</a>
</div>
<br />
<pre id="console"></pre>
js:
<script type="text/javascript">
var uploader = new plupload.Uploader({
browse_button: 'browse',
url: 'upload.php'
}); uploader.init(); uploader.bind('FilesAdded', function(up, files) {
var html = '';
plupload.each(files, function(file) {
html += '<li id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></li>';
});
document.getElementById('filelist').innerHTML += html;
}); uploader.bind('UploadProgress', function(up, file) {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
}); uploader.bind('Error', function(up, err) {
document.getElementById('console').innerHTML += "\nError #" + err.code + ": " + err.message;
}); document.getElementById('start-upload').onclick = function() {
uploader.start();
};
</script>
主要是使用options配置参数,使用内置函数添加方法,使用init()方法初始化uploader。
1 Options( 配置参数)
只有两个option是必须的: browse_button和url,剩下的都是可选的。
browse_button可以是DOM元素本身或者它的id。
url是服务端的fileupload handler
2 Events(各种事件)
常用的事件:
Init:当Plupload初始化完成后触发
PostInit:当Init事件发生后触发
FilesAdded:当文件添加到上传队列后触发
FileUploaded:当队列中的某一个文件上传完成后触发
UploadComplete:当上传队列中所有文件都上传完成后触发
Error:当发生错误时触发
可以根据error code捕捉到各种错误,各种错误码在
plupload
命名空间上的一些属性
都
可以找到。
3 Properties(plupload实例属性)
常用的属性:
id: uploader实例的唯一id
state: 整个上传的当前状态,可能是plupload.STARTED 或者 plupload.STOPPED. 可以通过stop/start方法控制. 默认值值STOPPED。
files: 当前上传队列,是一个文件实例的数组。
total:总的上传进度信息。包括多少文件已经上传完成,进度百分比等。
4 Methods(plupload实例方法)
常用的方法:
init()
初始化uploader实例并添加内部事件监听函数。
start()
开始上传队列文件
stop()
停止上传队列文件
5文件对象的属性和方法
在很多事件监听函数中,都会提供文件对象。其中FilesAdded,FilesRemoved和UploadComplete提供的是文件对象的数组,因为plupload允许同时选取多个文件。文件对象的属性包括name(文件名),type(文件类型),size(文件大小等),status(文件状态等)。文件方法包括getNative()(获取原生的文件对象), getSource()(获取mOxie.File 对象),关于oMoxie,后面会说明。
6 plupload
命名空间上的一些属性
主要是文件对象的status属性, plupload实例的state属性和各种错误的error code
1)state: STOPPED(1), STARTED(2)
2)status:QUEUED(1),UPLOADING(2), FAILED(4),DONE,(5)
3)error code:
HTTP_ERROR(-200): 发生http网络错误时
FILE_SIZE_ERROR(-600): 当选择的文件太大时
FILE_EXTENSION_ERROR(-601); 当选择的文件类型不符合要求时
FILE_DUPLICATE_ERROR(-602); 当选取了重复的文件而配置中又不允许有重复文件时
IMAGE_DIMENSIONS_ERROR(-702): 当文件大小超过了plupload所能处理的最大值时
三 可能遇到的问题
1
关于ie9 runtimes
Plupload是一个multi-runtime的文件上传API。
runtimes默认值为: "html5,flash,silverlight,html4"。可以在options中配置。
一般情况下,不需要配置该参数,因为Plupload默认会根据你的其他的参数配置来选择最合适的上传方式。如果没有特殊要求的话,Plupload会首先选择html5上传方式,如果浏览器不支持html5,则会使用flash或silverlight,如果前面两者也都不支持,则会使用最传统的html4上传方式。
在ie9浏览器下,不支持flash,需要使用oMxie的polyfill,借助的就是Moxie.swf。需要在options中配置两个option:flash_swf_url和silverlight_xap_url。分别对应flash上传组件的url地址和silverlight上传组件的url地址,如果是相对路径,则相对的是调用Plupload的html文档。
当找不到Moxie.swf文件时,runtimes会fallback到html4。下面两个截图就是找不到文件和找到文件时情况,moxie-shim的class会不同。当ie9下出现moxie-shim-html4,通常是没有找到Moxie.swf文件,会出现ie9的一些兼容性问题,比如浏览图片按钮不好点击或者前端预览图片无法显示等问题。
了解oMxie:https://github.com/moxiecode/moxie/wiki/API
2
关于flash跨域请求
在Flash中发起HTTP请求外部网站的资源时会引起Flash的跨域问题。
出现跨域问题时,Flash会先访问对方网站根目录的crossdomain.xml文件。
crossdomain.xml文件可以定义哪些网站有权限访问本网站的资源。
所以如果我们要允许别的网站跨域访问本网的资源需要在根目录下加入crossdomain.xml文件。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="wuage.com" />
</cross-domain-policy>
配置很简单,domain表示允许访问的域名。
plupload文件上传插件的更多相关文章
- 20款最好的jQuery文件上传插件
当它是关于开发网络应用程序和网页的时候,文件上传功能的重要性是不容忽视的.一个文件上传功能可以让你上传所有类型的文件在网站上,包括视频,图像,文件和更多.创建一个文件上传功能,对你的网站是不是很难,有 ...
- 7 款基于 JavaScript/AJAX 的文件上传插件
本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1. jQuer ...
- 7款js文件上传插件
1. jQuery File Upload 具有多文件上传.拖拽.进度条和图像预览功能的文件上传插件,支持跨域.分块.暂停恢复和客户端图像缩放.可与任何服务端平台(如PHP.Python.Ruby ...
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- jQuery文件上传插件Uploadify(转)
一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...
- 基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用
Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadi ...
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
- 可拖拽和带预览图的jQuery文件上传插件ssi-uploader
插件描述:ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件.该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非 ...
- Bootstrap文件上传插件File Input的使用
基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用 Bootstrap文件上传插件File Input是一个不错的文件上传控件, ...
随机推荐
- Devexpress之barManager控件属性
隐藏菜单栏左边的竖线和右边的箭头? 1.隐藏菜单栏上右边的箭头属性设置:OptionsBar=>>AllowQuickCustomization=False 2.隐藏菜单栏左边的竖线属性设 ...
- IE6下a标签上发送ajax请求总是error
IE6下真是处处是坑啊!!!走过了一个又一个坑,记录一下吧. 之前不知道a标签上注册click事件之后,发送ajax请求总是error.后来经过几番网上搜索,终于找到高人遇到此坑的解决办法.原来是a标 ...
- UIButton 文档翻译(持续更新)
UIButton 文档翻译 继承 UIControl; UIView; UIResponder; NSObject 协议 UIFocusEnvironment,UIAppearanceContaine ...
- 多线程并发编程之显示锁ReentrantLock和读写锁
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是 ...
- Android 原生listview item伸展收缩效果 (续)
接上一个原生的listview item的伸展收缩效果. 上一个可能做的有些粗糙,效果也没有这个好,上代码. package com.example.listviewdemo; import java ...
- Spring随笔 - 事务隔离级别
Spring提供5中事务隔离级别: ISOLATION_DEFAULT:使用数据库后端的默认隔离级别. ISOLATION_READ_UNCOMMITTED:允许读取尚未提交的数据变更.可能会导致脏读 ...
- laravel5.1框架简介及安装
最近自己出来实习了,进入了一个新的环境,不仅是生活中,在代码和架构中也完全是一个新的架构.由于公司使用laravel5.1框架,所以最近学习了laravel5.1框架,好了接下来就简单介绍一下lara ...
- HTTP 状态代码及其定义
所有 HTTP 状态代码及其定义. 代码 指示 2xx 成功 200 正常:请求已完成. 201 正常:紧接 POST 命令. 202 正常:已接受用于处理,但处理尚未完成. 20 ...
- C++ typeid实现原理
最近看了boost::any类源码,其实现主要依赖typeid操作符.很好奇这样实现的时间和空间开销有多大,决定探一下究竟. VS2008附带的type_info类只有头文件,没有源文件,声明如下: ...
- java转换字符串的编码(转)
package com.Alex.base; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class C ...