jquery上传插件:plupload事件参数说明详解

2018-12-01

本篇重点说明一下plupload的事件参数。并用2个例子说明一下绑定事件。

1、plupload参数说明:

Browse_button:触发浏览文件按钮标签的唯一id,,在flash、html5、和silverlight中能找到触发事件的源(我理解的,这个参数在队列部件不需要参见)

Container: 展现上传文件列表的容器,[默认是body]

chunk_size:当上传文件大于服务器接收端文件大小限制的时候,可以分多次请求发给服务器,如果不需要从设置中移出

drop_element:当浏览器支持拖拽的情况下,能够文件拖放到你想要的容器ID里

file_data_name:设置上传字段的名称。默认情况下被设置为文件。(我试验了没找到该如何使用它,暂且不提)

filters:选择文件扩展名的过滤器,每个过滤规则中只有title和ext两项[{title:"", extensions:""}]

flash_swf_url:flash文件地址

headers:自定义的插入http请求的键值对

max_file_size:最大上传文件大小(格式100b, 10kb, 10mb, 1gb)

multipart:布尔值,如果用mutlipart 代替二进制流的方式,在webkit下无法工作

multipart_params: 跟 multipart关联在一起的键值

multi_selection: 多选对话框

resize:修改图片属性 resize: {width: 320, height: 240, quality: 90}

runtimes:上传插件初始化选用那种方式的优先级顺序,如果第一个初始化失败就走第二个,依次类推

required_features:需要那些特性,才能初始化插件

url:上传服务器地址

unique_names:是否生成唯一的文件名,避免与服务器文件重名

urlstream_upload:布尔值 如果是flash上传应该用URLStream 代替FileReference.upload

pluload API文档

方法列表

方法列表:

Uploader(setting):创建实例的构造方法

bind(event, function[, scope]):绑定事件

destroy():销毁plupload的实例对象

uploader.destroy()

getFile(id): 获取上传文件信息

init:初始化plupload实例,添加监听对象

uploader.destroy()

refresh:重新实例化uploader

removeFile(id):从file中移除某个文件

splice(start,length):从队列中start开始删除length个文件, 返回被删除的文件列表

start() 开始上传

stop()停止上传

unbind(name, function): 接触事件绑定

unbindAll()解绑所有事件

属性集合

features:uploader中包含那些特性

files:当前队列中的文件列表

id:uploader实例的唯一id

runtime:当前运行环境(是html5、flash等等)

state:当前上传进度状态

total:当前上传文件的信息集合

事件集合

BeforeUpload(up, file):文件上传完之前触发的事件

ChunkUploaded(up, file,response)文件被分块上传的事件

Destroy(up):uploader的destroy调用的方法

Error(up, err):上传出错的时候触发

Fileadded(up, files):用户选择文件时触发

FileRemoved(up, files):当文件从上传队列中移除触发

FileUploaded(up, file, res):文件上传成功的时候触发

Init(up):当初始化的时候触发

PostInit(up):init执行完以后要执行的事件触发

QueueChanged(up):当文件队列变化时触发

Refresh(up):当silverlight/flash或是其他运行环境需要移动的时候触发

StateChanged(up)当整个上传队列被改变的时候触发

UploadComplete(up,file)当队列中所有文件被上传完时触发

UploadFile(up,file)当一个文件被上传的时候触发

UploadProgress(up,file):当文件正在被上传中触发

2、事件绑定的方法:

第一种:在标签中直接生成此插件

$("#uploader").plupload({

runtimes: "gears,flash,silverlight,browserplus,html5",

url: "uploadFiles.ashx", // 服务端上传路径

max_file_size: "500mb", // 文件上传最大限制。

chunk_size: "1mb", // 上传分块每块的大小,这个值小于服务器最大上传限制的值即可。

unique_names: true, // 上传的文件名是否唯一

//直接在标签中初始化插件,,开始

init: {

QueueChanged: function (up)

{

//这是一个文件列表变更事件;些处写事件处理方法;

},//直接在标签中初始化插件,,结束

是否生成缩略图(仅对图片文件有效)

//resize: { width: 320, height: 240, quality: 90 },

这个数组是选择器,就是上传文件时限制的上传文件类型

filters: [{ title: "All files", extensions: "mp3,s48" }

],

// Flash文件 的所在路径

flash_swf_url: "/js/Moxie.swf",

// silverlight文件所在路径

silverlight_xap_url: "/js/Moxie.xap"

});

第二种方法:

//实例化一个plupload上传对象

var uploader = new plupload.Uploader({

browse_button : "browse", //触发文件选择对话框的按钮,为那个元素id

url : "upload.php", //服务器端的上传页面地址

flash_swf_url : "js/Moxie.swf", //swf文件,当需要使用swf方式进行上传时需要配置该参数

silverlight_xap_url : "js/Moxie.xap" //silverlight文件,当需要使用silverlight方式进行上传时需要配置该参数

});

//在实例对象上调用init()方法进行初始化

uploader.init();

//绑定各种事件,并在事件监听函数中做你想做的事

uploader.bind("FilesAdded",function(uploader,files){

//每个事件监听函数都会传入一些很有用的参数,

//我们可以利用这些参数提供的信息来做比如更新UI,提示上传进度等操作

});

uploader.bind("UploadProgress",function(uploader,file){

//每个事件监听函数都会传入一些很有用的参数,

//我们可以利用这些参数提供的信息来做比如更新UI,提示上传进度等操作

});

必须要注意的是只能在初始化后才可以绑定事件!!

3、限制文件上传数量

上传时限制文件个数

upload.bind("FilesAdded",function(up, files){

$.each(files,function(i,file){

if(up.files.length > 1){

up.removeFile(file);

}

});

});

4、上传成功事件

上传成功后:

upload.bind("UploadComplete", function(up, file, res) {

$("#basicModal").attr("class","modal fade");

$("#basicModal").css("display","none");

$(".modal-backdrop").remove();

// 上传回调函数

jQuery("#updateSync").click();

});

});

5、开始上传事件:

jQuery("#cookie").click(function(){

var valm = $("#basicModal").attr("class");

var sty = $("#basicModal").css("display");

if(valm == "modal fade" | sty =="none;"){

$("#basicModal").attr("class","modal fade in");

$("#basicModal").css("display","block");

}else{

$("#basicModal").attr("class","modal fade");

$("#basicModal").css("display","none");

}

plupload();

var upload = $("#upload").pluploadQueue();

发现没有一个参数是配置2个文件一次提交。也就是说我想通过一个post发送2个文件是不行。除非是不用这个插件,使用asp.net自带的input type=file的方式一次性提交form表单。因为C#是支持一次post请求发送多个文件的。大家有兴趣可以去看看:HttpFileCollection myfiles = HttpContext.Current.Request.Files;

其中,我在尝试时候,发现2个Plupload 之间可以通过Plupload  的事件做一些事情。

var uploader;//第一个Plupload

var uploaderbig;//第二个Plupload

比如:监听文件添加成功事件。FilesAdded

//绑定文件添加进队列事件

uploaderbig.bind("FilesAdded", function (uploaderbig, files) {

for (var i = 0, len = files.length; i < len; i++) {

var file_name = files[i].name; //文件名

var html = "

"

+ file_name + "

";

$("#imageListtempbig").html(html);

!function (i) {

previewImage(files[i], function (imgsrc) {

$("#file-" + files[i].id).append("");

})

}(i);

}

});

当第一个Plupload  添加文件后,可以同时加到第二个Plupload  的files队列中:

//var files = uploader.files;

//    for (var i = 0, len = files.length; i < len; i++) {

//        uploaderbig.addFile(files[i]);

//    }

调用的事件是:addFile

当然,即使有这样的功能也无法满足我这边的需求。所以只有最好一个办法就是uploader在添加文件后,直接开始上传事件,上传成功返回服务器的地址。

js:

LoadUpplug(); uploader.init(); //初始化

//绑定文件添加进队列事件

uploader.bind("FilesAdded", function (uploader, files) {

Upsmallimage();

for (var i = 0, len = files.length; i < len; i++) {

var file_name = files[i].name; //文件名

var html = "

"

+ file_name + "

";

$("#imageListtemp").html(html);

!function (i) {

previewImage(files[i], function (imgsrc) {

$("#file-" + files[i].id).append("");

})

}(i);

}

});

///开始上传。

function Upsmallimage() {

var data;

data = {

Operate: "upsmallimage"

};

uploader.setOption("multipart_params", data);

uploader.start();

}

C#服务器端读取文件并保存:

private object GetUpsmallimage()

{

//先临时保存到temp下面,如果一起提交的成功的话,则从temp删除,拿到Media

string filepath =HttpContext.Current.Server.MapPath ("/Upload/Media/");

string websiteurl = Utility.GetAppSettings("ImageWebSite");

//HttpContext.Current.Server.MapPath("/Upload/Media/");

HttpFileCollection files = HttpContext.Current.Request.Files;

int count = files.Count;

HttpPostedFile file = files[0];

string fileName = Guid.NewGuid().ToString() + Path.GetFileName(file.FileName);

try

{

string severlocalpath = filepath + fileName;

file.SaveAs(severlocalpath);

}

catch (Exception xe)

{

fileName = "" ;

}

return fileName;

}

有更好的办法,请告知一声。

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

plupload怎么设置属性_jquery上传插件:plupload事件参数说明详解相关推荐

  1. python代码图片头像_Flask 上传自定义头像的实例详解

    Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...

  2. linux上连接ftp服务器,linux下lftp连接ftp服务器进行上传与下载的方法详解

    摘要 腾兴网为您分享:linux下lftp连接ftp服务器进行上传与下载的方法详解,中英翻译,中建在线,掌上看家,银行帮等软件知识,以及微信一键转发工具,小学英语冀教版,正是在下表情包,易问电信,万能 ...

  3. JavaScript 上传插件plupload

    官网:https://www.plupload.com/ 示例:http://chaping.github.io/plupload/demo/ 下载:https://www.plupload.com/ ...

  4. java上传下载_Java文件上传与文件下载实现方法详解

    本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传 ...

  5. uni-app上传大文件/视频失败详解

    大文件/视频上传失败可能会给你造成一个跨域的假象,仔细分析一下,如果小文件/视频可以上传成功.就说明不是跨域的问题,可以排除跨域.就可能是一下三个原因造成大文件/视频上传失败. 原因一: APP做了上 ...

  6. plupload上传插件绑定事件的两种方法

    在经受一天的磨难之后终于找到处理事件方法: 先引用: <script src="js/plupload.full.min.js" type="text/javasc ...

  7. 前端上传插件Plupload的实际使用(个人实操)

    一个主要的页面,其中包裹了一个iframe页面,在项目中,这个iframe页面包裹在主页面的div标签中,主要用于上传文件附件. 用的是plupload.full插件,主要引入以下几个js: jque ...

  8. Linux 中 3 个文件打包上传和下载相关命令详解

    tar 命令 通过 SSH 访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar 命令就是必不可少的一个功能强大的工具.Linux 中最流行的tar是麻雀虽小,五脏俱全,功能强大. 使用t ...

  9. 网络安全与渗透:文件上传漏洞,一文详解(十)此生无悔入华夏,男儿何不带吴钩

    中华人民共和国网络安全法 阅读本文前,请熟读并遵守中华人民共和国网络安全法: http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P02020061 ...

最新文章

  1. RESTful之自动生成接口文档
  2. IDEA无法在service层用注解方式注入mapper
  3. IT人的年夜饭,也太香了吧
  4. 比特币:一种点对点的电子现金系统
  5. python访问共享文件夹_python – 通过linux机器打开Windows共享文件夹
  6. php模板和框架,php模板和框架的区别的区别是什么
  7. C# 各种常用集合类型的线程安全版本
  8. 第十五章:进程间通信
  9. 算法训练 s01串java_试题 算法训练 s01串
  10. pdf安装包_PDF多功能格式转换器安装教程附安装包
  11. 19个免费好用的CSS代码样式生成器工具
  12. 谷歌(google)、百度、必应d等高级搜索指令使用
  13. 如何将CHM转换为PDF文件?
  14. python全栈工程师知识框架_全栈工程师的知识结构
  15. 川普上台,VR游戏开发者也来恶搞蹭热度
  16. 乳清蛋白和支链氨基酸不得不说的关系
  17. 计算机英语读法语音,英语语音朗读技巧
  18. 水瓶座|水瓶座性格分析
  19. js html显示emoji表情,canvas绘制一个常用的emoji表情
  20. 89.破碎的玻璃横幅

热门文章

  1. android蓝牙BLE 有源码 有视频
  2. pd.Series.cor的三大相关性系数
  3. 怎么换计算机的桌面背景6,台式电脑怎么换桌面壁纸
  4. 虚拟机和主机相互ping不通方法总结
  5. 牛客网比赛-Wannafly挑战赛27
  6. 【王道】计算机组成原理第一章计算机系统概述(一)
  7. C++入门级——缺省参数
  8. mklink 搜狗五笔输入法使用拼音输入法的颜文字工具
  9. MasterCAM2017车铣复合视频教程
  10. 一位35岁技术经理的忠告:在职场多点雷霆手段,少点菩萨心肠!