jquery-file-upload 文件上传带进度条效果

jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。

效果图如下所示:

html 部分

<div style="line-height:34px;margin-top:20px;">
    <label style="float: left;font-size:14px">上传文件:</label>
    <span class="btn btn-success fileinput-button fn-left">
   <i class="glyphicon glyphicon-plus"></i>
   <span>浏览...</span>
   <input type="file" name="file" id="file_upload">
  </span>
    <div style="float: left;margin-left: 20px;font-weight: bold" id="uploadText"></div>
    </div>
    <div class="fn-clear"></div>
    <div id="progress">
    <div class="bar" style="width: 0%;"></div>
    </div> 

css 部分

<link rel="stylesheet" href="/admin/assets/plugins/jquery-file-upload/css/jquery.fileupload-ui.css" rel="external nofollow" >
<link rel="stylesheet" href="/admin/assets/plugins/jquery-file-upload/css/jquery.fileupload.css" rel="external nofollow" > 

/*文件上传控件*/
.bar {
 background-image: -webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);
 background-image: -o-linear-gradient(top,#5cb85c 0,#449d44 100%);
 background-image: -webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));
 background-image: linear-gradient(to bottom,#5cb85c 0,#449d44 100%);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
 background-repeat: repeat-x;
 height: 20px;
 font-size: 12px;
 line-height: 20px;
 color: #fff;
 text-align: center;
 background-color: #428bca;
 -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
 box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
 -webkit-transition: width .6s ease;
 -o-transition: width .6s ease;
 transition: width .6s ease;
}
#progress {
 background-image: -webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);
 background-image: -o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);
 background-image: -webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));
 background-image: linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
 background-repeat: repeat-x;
 height: 20px;
 width: 0%;
 margin-bottom: 20px;
 overflow: hidden;
 background-color: #f5f5f5;
 border-radius: 4px;
 -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
 box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
 margin-top: 20px;
}
.glyphicon {
 position: relative;
 top: 1px;
 display: inline-block;
 font-family: 'Glyphicons Halflings';
 font-style: normal;
 font-weight: 400;
 line-height: 1;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
}
.glyphicon-plus:before {
 content: "\2b";
}
.btn-success {
 color: #fff;
 background-color: #5cb85c;
 border-color: #4cae4c;
}
.btn {
 display: inline-block;
 padding: 6px 12px;
 margin-bottom: 0;
 font-size: 14px;
 font-weight: 400;
 line-height: 1.42857143;
 text-align: center;
 white-space: nowrap;
 vertical-align: middle;
 cursor: pointer;
 -webkit-user-select: none;
 -moz-user-select: none;
 -ms-user-select: none;
 user-select: none;
 background-image: none;
 border: 1px solid transparent;
 border-radius: 4px;
} 

js 部分

<script src="/admin/assets/plugins/jquery-file-upload/js/vendor/jquery.ui.widget.js"></script>
<script src="/admin/assets/plugins/jquery-file-upload/js/jquery.fileupload.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/admin/assets/plugins/jquery-1.10.2.min.js"></script> 
<span style="font-family:monospace;font-size:14px;"> <span id="_xhe_cursor"></span>$('#file_upload').fileupload({
  dataType: 'json',
  url:'${pageContext.request.contextPath}/excel/upload',
  autoUpload:false,
  add: function (e, data) {
  $('#progress').css(
   'width','0%'
  );
  $('#progress .bar').css(
   'width', '0%'
  );
  $("#uploadText").empty();
  var fileType = data.files[0].name.split('.').pop();
  // console.log(data);
  var acceptFileTypes = /xls|xlsx$/i;
  var size = data.files[0].size;
  size = (size/1024).toFixed(2);//文件大小单位kb
  var maxFileSize = 5*1024;//最大允许文件大小单位kb
  if (!acceptFileTypes.test(fileType)) {
   new Message({message:"不支持的文件类型,仅支持EXCEL文件"});
   return ;
  }
  if(size>maxFileSize){
   new Message({message:"文件大小:"+size+"KB,超过最大限制:"+maxFileSize+"KB"});
   return ;
  }
  data.context = $("<button class=' ui-button ui-button-lwhite'/>").text("上传")
   .appendTo("#uploadText")
   .click(function () {
    data.context = $("<p/>").text("正在上传...").replaceAll($(this));
    data.submit();
   });
  },
  progressall: function (e, data) {
  var progress = parseInt(data.loaded / data.total * 100, 10);
  $('#progress').css(
   'width','100%'
  );
  $('#progress .bar').css(
   'width',progress + '%'
  );
  },
  fail:function (e, data) {
  new Message({message:"上传失败"});
  },
  done: function (e, data) {
  console.log(data.files[0]);
  var fileName = data.files[0].name;
  var size = data.files[0].size;
  var obj = data.result;
  if(obj.success == true){
   $("#filePath").val(obj.result.fileId+"&"+obj.result.opLogId);
   data.context.text("文件上传已完成!文件名:"+fileName+" 文件大小:"+size+"kb");
  }else{
   alert(obj.errorMsg);
  }
  }
 });</span> 

XHR响应为Json时IE的下载BUG

这里需要特别注意的是,由于jQuery File Upload都是采用XHR在传递数据,服务器端返回的通常是JSON格式的响应,但是IE会将这些JSON响应误认为是文件传输,然后直接弹出下载框询问是否需要下载。

解决这个问题的方法是必须将相应的Http Head从

Content-Type: application/json 

更改为

Content-Type: text/

总结

以上所述是小编给大家介绍的jquery-file-upload 文件上传带进度条效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • jquery之ajaxfileupload异步上传插件(附工程代码)
  • jquery uploadify和apache Fileupload实现异步上传文件示例
  • 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
  • jQuery插件ajaxFileUpload实现异步上传文件效果
  • JQuery插件ajaxfileupload.js异步上传文件实例
  • jQuery异步上传文件插件ajaxFileUpload详细介绍
  • PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
  • JQuery fileupload插件实现文件上传功能
  • jQuery插件AjaxFileUpload实现ajax文件上传
  • jQuery插件ajaxfileupload.js实现上传文件
(0)

相关推荐

  • jquery之ajaxfileupload异步上传插件(附工程代码)

    点我下载工程代码 由于项目需求,在处理文件上传时需要使用到文件的异步上传.这里使用Jquery Ajax File Uploader这个组件下载地址:http://www.phpletter.com/download_project_version.php?version_id=6 服务器端采用struts2来处理文件上传. 所需环境: jquery.js ajaxfileupload.js struts2所依赖的jar包 及struts2-json-plugin-2.1.8.1.jar 编写文

  • jQuery异步上传文件插件ajaxFileUpload详细介绍

    一.ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数说明: 1.url   上传处理程序地址. 2,fileElementId   需要上传的文件域的ID,即<input type="file">的ID. 3,secureuri 是否启用安全提交,默认为false. 4,dataType 服务器返回的数据类型.可以为xml,sc

  • PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例

    平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.详解ajaxFileUpload插件的语法参数 原理:ajaxfileupload是通过监听iframe的onload方

  • 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子

    jQuery插件AjaxFileUpload可以实现ajax文件上传,该插件使用非常简单,首先了解一下正确使用AjaxFileUpload插件的方法,然后再了解一些常见的错误信息和解决方法. 使用说明 需要使用jQuery库文件 和AjaxFileUpload库文件 使用实例 一,包含文件部分 复制代码 代码如下: <script type="text/javascript" src="jquery.js"></script> <scr

  • JQuery插件ajaxfileupload.js异步上传文件实例

    在服务器端做文件上传的过程中,如果使用web服务器短端的上传控件去上传文件的话,会导致页面刷新一次,这样对用户的体验就不是很友好了.ajaxfileupload.js是一款jQuery的异步上传文件插件,使用简单且容易上手. 前置条件:ajaxfileupload.js文件,百度下载一个就行. JS引用: 复制代码 代码如下: <script src="/Content/JQueryJS/jquery-2.1.1.js"></script> <script

  • JQuery fileupload插件实现文件上传功能

    道理相通,我简单分享下在.net MVC下的实装. 1.制作Model类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace RCRS.WebApp.LG.EM.Models { //---------------------------------------------------------------- /// <summary> /// Impor

  • jQuery插件ajaxFileUpload实现异步上传文件效果

    ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数说明: 1.url   上传处理程序地址. 2,fileElementId   需要上传的文件域的ID,即<input type="file">的ID. 3,secureuri 是否启用安全提交,默认为false. 4,dataType 服务器返回的数据类型.可以为xml,scri

  • jQuery插件ajaxfileupload.js实现上传文件

    AjaxUpLoad.js的使用实现无刷新文件上传,如图 1.创建页面并编写HTML 上传文档: <div class="uploadFile"> <span id="doc"><input type="text" disabled="disabled" /></span> <input type="hidden" id="hidFileNam

  • jQuery插件AjaxFileUpload实现ajax文件上传

    本文实例为大家分享了AjaxFileUpload实现文件上传的具体代码,供大家参考,具体内容如下 jQuery插件AjaxFileUpload用来实现ajax文件上传,该插件使用非常简单,接下来写个demo演示怎么用AjaxFileUpload插件实现文件上传. 1.引入AjaxFileUpload插件相关的js 复制代码 代码如下: <script type="text/javascript" src="<%=basePath%>resources/js/

  • jquery uploadify和apache Fileupload实现异步上传文件示例

    jQuery Uploadify + Apache Fileupload异步上传文件示例1.可以限制上传文件大小和类型,理论上任何类型的文件都可以上传(自己根据api配置即可):2.后台使用Apache commons-fileupload-1.3.1.jar作为上传工具包,本示例支持一次性多文件上传:3.文件上传目录可以任意指定,请在web.xml中配置:Uploadify api 详见http://www.uploadify.com/documentation/ FileUploadServ

随机推荐