jquery插件uploadify实现带进度条的文件批量上传


Posted in Javascript onDecember 13, 2015

有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案,分享给大家供大家参考,具体如下

先上效果图:

jquery插件uploadify实现带进度条的文件批量上传

jquery插件uploadify实现带进度条的文件批量上传

具体代码如下:

在页面中如下

jquery插件uploadify实现带进度条的文件批量上传

完整页面代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>文件批量上传Demo</title>
 <!--引入Jquery-->
 <script src="js/jquery-1.11.3.min.js"></script>
 <!--引入uploadify-->
 <script type="text/javascript" src="uploadify/jquery.uploadify.js"></script>
 <link type="text/css" href="uploadify/uploadify.css" rel="stylesheet" />

 <script type="text/javascript">
  $(function () {
   var guid = '<%=Request["guid"] %>';
   var type = '<%=Request["type"] %>';
   if (guid == null || guid == "") {
    guid = newGuid();
   }
   if (type != null) {
    type = type + '/';
   }

   $('#file_upload').uploadify({
    'swf': 'uploadify/uploadify.swf',    //FLash文件路径
    'buttonText': '浏 览',      //按钮文本
    'uploader': 'uploadhandler.ashx?guid=' + guid, //处理ASHX页面
    'formData': { 'folder': 'picture', 'isCover': 1 },   //传参数
    'queueID': 'fileQueue',      //队列的ID
    'queueSizeLimit': 10,       //队列最多可上传文件数量,默认为999
    'auto': false,         //选择文件后是否自动上传,默认为true
    'multi': true,         //是否为多选,默认为true
    'removeCompleted': true,      //是否完成后移除序列,默认为true
    'fileSizeLimit': '0',       //单个文件大小,0为无限制,可接受KB,MB,GB等单位的字符串值
    'fileTypeDesc': 'All Files',     //文件描述
    'fileTypeExts': '*.*',       //上传的文件后缀过滤器
    'onQueueComplete': function (queueData) {  //所有队列完成后事件
     alert("上传完毕!");
    },
    'onError': function (event, queueId, fileObj, errorObj) {
     alert(errorObj.type + ":" + errorObj.info);
    },
    'onUploadStart': function (file) {
    },
    'onUploadSuccess': function (file, data, response) { //一个文件上传成功后的响应事件处理
     //var data = $.parseJSON(data);//如果data是json格式
     //var errMsg = "";
    }

   });
  });

  function newGuid() {
   var guid = "";
   for (var i = 1; i <= 32; i++) {
    var n = Math.floor(Math.random() * 16.0).toString(16);
    guid += n;
    if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
     guid += "-";
   }
   return guid;
  }

  //执行上传
  function doUpload() {
   $('#file_upload').uploadify('upload', '*');
  }
 </script>

</head>
<body>
 <form id="form1" runat="server" enctype="multipart/form-data">
  <div id="fileQueue" class="fileQueue"></div>
  <div>
   <input type="file" name="file_upload" id="file_upload" />
   <p>
    <input type="button" class="shortbutton" id="btnUpload" onclick="doUpload()" value="上传" />
        
    <input type="button" class="shortbutton" id="btnCancelUpload" onclick="$('#file_upload').uploadify('cancel')" value="取消" />
   </p>
   <div id="div_show_files"></div>
  </div>
 </form>
</body>
</html>

UploadHandler.ashx代码:

using System;
using System.Web;
using System.IO;

public class UploadHandler : IHttpHandler {
 
 public void ProcessRequest (HttpContext context) {
  context.Response.ContentType = "text/plain";
  context.Request.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
  context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
  context.Response.Charset = "UTF-8";

  if (context.Request.Files.Count > 0)
  {
   #region 获取上传路径
   string uploadFolder = GetUploadFolder();
   #endregion

   if (System.IO.Directory.Exists(uploadFolder))
   {//如果上传路径存在
    HttpPostedFile file = context.Request.Files["Filedata"];
    string filePath = Path.Combine(uploadFolder, file.FileName);
    file.SaveAs(filePath);
    context.Response.Write("0");
   }
   else
   {
    context.Response.Write("2");
   }
  }
 }
 
 public bool IsReusable {
  get {
   return false;
  }
 }

 /// <summary>
 /// 返回不带后缀的文件名
 /// </summary>
 /// <param name="fileName"></param>
 /// <returns></returns>
 public static string GetFirstFileName(string fileName)
 {
  return Path.GetFileNameWithoutExtension(fileName);
 }

 /// <summary>
 /// 获取上传目录
 /// </summary>
 /// <returns></returns>
 public static string GetUploadFolder()
 {
  string rootPath = HttpContext.Current.Server.MapPath("~");
  return Path.Combine(rootPath, "test");
 }

}

文件上传.NET默认有大小限制,像IIS限制的30M默认请求大小。如果不想修改IIS,又想突破这个大小的限制,比如上传1GB大小的文件。

这是修改Web.config即可实现。

<?xml version="1.0" encoding="utf-8"?>

<!--
 -->

<configuration>

 <system.web>
  <compilation debug="true" targetFramework="4.0" />
  <httpRuntime maxRequestLength="1073741824"/>
 </system.web>

 <!--用于设置文件上传的最大允许大小(单位:bytes)-->
 <system.webServer>
  <security>
  <requestFiltering>
   <!--修改服务器允许最大长度(1GB)-->
   <requestLimits maxAllowedContentLength="1073741824"/>
  </requestFiltering>
  </security>
 </system.webServer>
 
</configuration>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
兼容FF和IE的动态table示例自写
Oct 21 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
vue 计时器组件的实现代码
Sep 14 Javascript
js装饰设计模式学习心得
Feb 17 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
适合后台管理系统开发的12个前端框架(小结)
Jun 29 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 #Javascript
JavaScript模块化开发之SeaJS
Dec 13 #Javascript
node.js require() 源码解读
Dec 13 #Javascript
JavaScript 模块的循环加载实现方法
Dec 13 #Javascript
javascript日期验证之输入日期大于等于当前日期
Dec 13 #Javascript
详解JavaScript正则表达式之RegExp对象
Dec 13 #Javascript
详解JavaScript基于面向对象之继承
Dec 13 #Javascript
You might like
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
js微信分享API
2020/10/11 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python算法应用实战之栈详解
2017/02/04 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
工程力学专业毕业生求职信
2013/10/06 职场文书
营业员个人总结的自我评价
2013/10/25 职场文书
服务之星获奖感言
2014/01/21 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
委托书模板
2014/04/04 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
个人委托书
2014/07/31 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
授权委托书协议书
2014/10/16 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python