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表示允许访问的域名。

时间: 2024-11-05 12:15:28

plupload文件上传插件的相关文章

7 款基于 JavaScript/AJAX 的文件上传插件

本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1.  jQuery File Upload 具有多文件上传.拖拽.进度条和图像预览功能的文件上传插件,支持跨域.分块.暂停恢复和客户端图像缩放.可与任何服务端平台(如PHP.Python.Ruby on Rails.Java.Node.js.Go等)一起使用,支持标准的HTML表单文件上传. 2.  Pixelco

7款js文件上传插件

1.  jQuery File Upload 具有多文件上传.拖拽.进度条和图像预览功能的文件上传插件,支持跨域.分块.暂停恢复和客户端图像缩放.可与任何服务端平台(如PHP.Python.Ruby on Rails.Java.Node.js.Go等)一起使用,支持标准的HTML表单文件上传. 2.  Pixelcone Fileuploader 使用HTML5 API的jQuery文件上传插件,支持AJAX上传和拖拽操作,以及针对老版本浏览器的iframe上传部件.有多种形式来实现多文件上传,

关于Plupload结合上传插件jquery.plupload.queue的使用

方便日后查阅!! 事例代码: @import url(common/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css) ; src="http://www.iadpush.com/assets/common/jquery-1.8.2.min.js"> src="http://bp.yahooapis.com/2.4.21/browserplus-min.js"> src="

支持多文件上传的jQuery文件上传插件Uploadify

支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数定制功能,如文件大小.文件类型.按钮图片定义.上传文件脚本等. Flash版本使用方法: 1.加载JS和CSS ? 1 2 3 <script src="jquery/1.7.1/jquery.min.js

强大的支持多文件上传的jQuery文件上传插件Uploadify

支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数定制功能,如文件大小.文件类型.按钮图片定义.上传文件脚本等. Flash版本使用方法: 1.加载JS和CSS ? 1 2 3 <script src="jquery/1.7.1/jquery.min.js

文件上传插件Uploadify在Struts2中的应用,完整详细实例

->最近由于项目需要使用到一个上传插件,在网上发现uploadify挺不错,所以决定使用它,但是官网文档和例子是php的,而项目是SSI框架的,所以自己对uploadify在struts2中的使用进行了一番研究,最终实现了.发现网上关于这方面的资料很少,而且有的一两篇例子还不大全,网友提问质疑很多,所以,下面我特将我的代码公布: --------------------------------------------------------------------- 步骤一: 到官网上下载upl

基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用

Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadify 好看一些,功能也强大些,本文主要基于我自己的框架代码案例,介绍其中文件上传插件File Input的使用.关于Uploadify的控件介绍,可以参考我之前的随笔介绍<基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用>. 1.文件上传插件File In

uploadify多文件上传插件

这个插件是兼容IE8及以上版本的,实现了基本功能,底部有下载连接 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title>uploadify多文件上传插件使用</title> <meta http-equ

Stream - Web大文件上传插件

Stream 简介 Stream 是根据某网的文件上传插件加工而来,支持不同平台(Windows, Linux, Mac, Android, iOS)下,主流浏览器(IE7+, Chrome, Firefox, Safari, 其他)的上传工作,当然在Html5标准下,还支持文件的断点续传功能,有效解决大文件的Web上传问题! 主要特征 1. 支持HTML5.Flash两种方式(跨域)上传 2. 多文件一起上传 3. HTML5支持断点续传,拖拽等新特性 4. 兼容性好IE7+, FF3.6+,