AspNet中使用JQuery上传插件Uploadify详解


Posted in Javascript onMay 20, 2015

首先按下面的步骤来实现一个简单的上传功能。

1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中

2 在项目中添加UploadHandler.ashx文件用来处理文件的上传。

3 在项目中添加UploadFile文件夹,用来存放上传的文件。

进行完上面三步后项目的基本结构如下图:

AspNet中使用JQuery上传插件Uploadify详解

4 Default.aspx的html页的代码修改如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>Uploadify</title>
  <link href="JS/jquery.uploadify-v2.1.0/example/css/default.css"
   rel="stylesheet" type="text/css" />
  <link href="JS/jquery.uploadify-v2.1.0/uploadify.css"
   rel="stylesheet" type="text/css" />

  <script type="text/javascript"
   src="JS/jquery.uploadify-v2.1.0/jquery-1.3.2.min.js"></script>

  <script type="text/javascript"
   src="JS/jquery.uploadify-v2.1.0/swfobject.js"></script>

  <script type="text/javascript"
  src="JS/jquery.uploadify-v2.1.0/jquery.uploadify.v2.1.0.min.js"></script>

  <script type="text/javascript">
    $(document).ready(function()
    {
      $("#uploadify").uploadify({
        'uploader': 'JS/jquery.uploadify-v2.1.0/uploadify.swf',
        'script': 'UploadHandler.ashx',
        'cancelImg': 'JS/jquery.uploadify-v2.1.0/cancel.png',
        'folder': 'UploadFile',
        'queueID': 'fileQueue',
        'auto': false,
        'multi': true
      });
    }); 
  </script>

</head>
<body>
  <div id="fileQueue"></div>
  <input type="file" name="uploadify" id="uploadify" />
  <p>
   <a href="javascript:$('#uploadify').uploadifyUpload()">上传</a>| 
   <a href="javascript:$('#uploadify').uploadifyClearQueue()">取消上传</a>
  </p>
</body>
</html>

5  UploadHandler类的ProcessRequest方法代码如下:

public void ProcessRequest(HttpContext context)
{
  context.Response.ContentType = "text/plain";  
  context.Response.Charset = "utf-8";  

  HttpPostedFile file = context.Request.Files["Filedata"];  
  string uploadPath = 
    HttpContext.Current.Server.MapPath(@context.Request["folder"])+"\\"; 

  if (file != null) 
  { 
    if (!Directory.Exists(uploadPath)) 
    { 
      Directory.CreateDirectory(uploadPath); 
    }  
    file.SaveAs(uploadPath + file.FileName); 
    //下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失
    context.Response.Write("1"); 
  }  
  else 
  {  
    context.Response.Write("0");  
  } 
}

6 运行后效果如下图:

AspNet中使用JQuery上传插件Uploadify详解

7 选择了两个文件后,点击上传,就可以看到UploadFile文件夹中会增加这两个文件。

上面简单地实现了一个上传的功能,依靠函数uploadify实现,uploadify函数的参数为json格式,可以对json对象的key值的修改来进行自定义的设置,如multi设置为true或false来控制是否可以进行多文件上传,下面就来介绍下这些key值的意思:

uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf。
script :   后台处理程序的相对路径 。默认值:uploadify.php
checkScript :用来判断上传选择的文件在服务器是否存在的后台处理程序的相对路径
fileDataName :设置一个名字,在服务器处理程序中根据该名字来取上传文件的数据。默认为Filedata
method : 提交方式Post 或Get 默认为Post
scriptAccess :flash脚本文件的访问模式,如果在本地测试设置为always,默认值:sameDomain 
folder :  上传文件存放的目录 。
queueID : 文件队列的ID,该ID与存放文件队列的div的ID一致。
queueSizeLimit : 当允许多文件生成时,设置选择文件的个数,默认值:999 。
multi : 设置为true时可以上传多个文件。
auto : 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 。
fileDesc : 这个属性值必须设置fileExt属性后才有效,用来设置选择文件对话框中的提示文本,如设置fileDesc为“请选择rar doc pdf文件”,打开文件选择框效果如下图:

AspNet中使用JQuery上传插件Uploadify详解

fileExt : 设置可以选择的文件的类型,格式如:'*.doc;*.pdf;*.rar' 。
sizeLimit : 上传文件的大小限制 。
simUploadLimit : 允许同时上传的个数 默认值:1 。
buttonText : 浏览按钮的文本,默认值:BROWSE 。
buttonImg : 浏览按钮的图片的路径 。
hideButton : 设置为true则隐藏浏览按钮的图片 。
rollover : 值为true和false,设置为true时当鼠标移到浏览按钮上时有反转效果。
width : 设置浏览按钮的宽度 ,默认值:110。
height : 设置浏览按钮的高度 ,默认值:30。
wmode : 设置该项为transparent 可以使浏览按钮的flash背景文件透明,并且flash文件会被置为页面的最高层。 默认值:opaque 。
cancelImg :选择文件到文件队列中后的每一个文件上的关闭按钮图标,如下图:

AspNet中使用JQuery上传插件Uploadify详解

上面介绍的key值的value都为字符串或是布尔类型,比较简单,接下来要介绍的key值的value为一个函数,可以在选择文件、出错或其他一些操作的时候返回一些信息给用户。

onInit : 做一些初始化的工作。

onSelect :选择文件时触发,该函数有三个参数

event:事件对象。
queueID:文件的唯一标识,由6为随机字符组成。
fileObj:选择的文件对象,有name、size、creationDate、modificationDate、type 5个属性。
代码如下:

$(document).ready(function()
{
  $("#uploadify").uploadify({
    'uploader': 'JS/jquery.uploadify-v2.1.0/uploadify.swf',
    'script': 'UploadHandler.ashx',
    'cancelImg': 'JS/jquery.uploadify-v2.1.0/cancel.png',
    'folder': 'UploadFile',
    'queueID': 'fileQueue',
    'auto': false,
    'multi': true,
    'onInit':function(){alert("1");},
    'onSelect': function(e, queueId, fileObj)
    {
      alert("唯一标识:" + queueId + "\r\n" +
         "文件名:" + fileObj.name + "\r\n" +
         "文件大小:" + fileObj.size + "\r\n" +
         "创建时间:" + fileObj.creationDate + "\r\n" +
         "最后修改时间:" + fileObj.modificationDate + "\r\n" +
         "文件类型:" + fileObj.type
      );

    }
  });
});

当选择一个文件后弹出的消息如下图:

AspNet中使用JQuery上传插件Uploadify详解

onSelectOnce :在单文件或多文件上传时,选择文件时触发。该函数有两个参数event,data,data对象有以下几个属性:

fileCount:选择文件的总数。
filesSelected:同时选择文件的个数,如果一次选择了3个文件该属性值为3。
filesReplaced:如果文件队列中已经存在A和B两个文件,再次选择文件时又选择了A和B,该属性值为2。
allBytesTotal:所有选择的文件的总大小。
onCancel : 当点击文件队列中文件的关闭按钮或点击取消上传时触发。该函数有event、queueId、fileObj、data四个参数,前三个参数同onSelect 中的三个参数,data对象有两个属性fileCount和allBytesTotal。

fileCount:取消一个文件后,文件队列中剩余文件的个数。
allBytesTotal:取消一个文件后,文件队列中剩余文件的大小。
onClearQueue :当调用函数fileUploadClearQueue时触发。有event和data两个参数,同onCancel 中的两个对应参数。

onQueueFull :当设置了queueSizeLimit并且选择的文件个数超出了queueSizeLimit的值时触发。该函数有两个参数event和queueSizeLimit。

onError :当上传过程中发生错误时触发。该函数有event、queueId、fileObj、errorObj四个参数,其中前三个参数同上,errorObj对象有type和info两个属性。

type:错误的类型,有三种‘HTTP', ‘IO', or ‘Security'
info:错误的描述
onOpen :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列。该函数有event、queueId、fileObj三个参数,参数的解释同上。

onProgress :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列,在onOpen之后触发。该函数有event、queueId、fileObj、data四个参数,前三个参数的解释同上。data对象有四个属性percentage、bytesLoaded、allBytesLoaded、speed:

percentage:当前完成的百分比
bytesLoaded:当前上传的大小
allBytesLoaded:文件队列中已经上传完的大小
speed:上传速率 kb/s
onComplete:文件上传完成后触发。该函数有四个参数event、queueId、fileObj、response、data五个参数,前三个参数同上。response为后台处理程序返回的值,在上面的例子中为1或0,data有两个属性fileCount和speed

fileCount:剩余没有上传完成的文件的个数。
speed:文件上传的平均速率 kb/s
注:fileObj对象和上面讲到的有些不太一样,onComplete 的fileObj对象有个filePath属性可以取出上传文件的路径。

onAllComplete:文件队列中所有的文件上传完成后触发。该函数有event和data两个参数,data有四个属性,分别为:

filesUploaded :上传的所有文件个数。
errors :出现错误的个数。
allBytesLoaded :所有上传文件的总大小。
speed :平均上传速率 kb/s

相关函数介绍

在上面的例子中已经用了uploadifyUpload和uploadifyClearQueue两个函数,除此之外还有几个函数:

uploadifySettings:可以动态修改上面介绍的那些key值,如下面代码

$('#uploadify').uploadifySettings('folder','JS');

如果上传按钮的事件写成下面这样,文件将会上传到uploadifySettings定义的目录中

<a href="javascript:$('#uploadify').uploadifySettings('folder','JS');
$('#uploadify').uploadifyUpload()">上传</a>

uploadifyCancel:该函数接受一个queueID作为参数,可以取消文件队列中指定queueID的文件。

$('#uploadify').uploadifyCancel(id);

花了一个晚上,终于写完了,对JQuery这个上传插件也基本了解了,希望对大家有所帮助,不对之处还望大家指正。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JS Excel读取和写入操作(模板操作)实现代码
Apr 11 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
javascript写的异步加载js文件函数(支持数组传参)
Jun 07 Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 Javascript
跟我学习javascript的arguments对象
Nov 16 Javascript
Bootstrap3学习笔记(二)之排版
May 20 Javascript
微信小程序 教程之列表渲染
Oct 18 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
windows实现npm和cnpm安装步骤
Oct 24 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
Apr 07 Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 #Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 #Javascript
JS中的Replace方法使用经验分享
May 20 #Javascript
jquery使用经验小结
May 20 #Javascript
js实现字符串转日期格式的方法
May 20 #Javascript
JavaScript实现带标题的图片轮播特效
May 20 #Javascript
手机端页面rem宽度自适应脚本
May 20 #Javascript
You might like
PHP类的使用 实例代码讲解
2009/12/28 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python实现Zabbix-API监控
2018/09/17 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
yy结婚证婚词
2014/01/10 职场文书
上课迟到检讨书
2014/02/19 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
检讨书怎么写
2015/01/23 职场文书
碧霞祠导游词
2015/02/09 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
退货证明模板
2015/06/23 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Oracle中日期的使用方法实例
2022/07/07 Oracle