jQuery+AJAX实现网页无刷新上传


Posted in Javascript onFebruary 22, 2015

新年礼,提供简单、易套用的 jQuery AJAX 上传示例及代码下载。后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP)。

有时做一个网站项目 (不论是否 ASP.NET),内附的 FileUpload 控件,功能不足 (页面必须刷新、不支援 AJAX),或外观太丑被用户嫌弃 (却无法透过 CSS 自定义外观)。网路上虽已有许多可用的示例,如: jQuery File Upload,但功能太强大、外观复杂,欲仅取出部分功能来引用,反而不易。因此我参考了两本书上、多个网路上的示例,整合、改写成此一示例,标榜:功能简单 (够用就好)、外观可自定义 (只用 HTML 的 div、span、input,不被特定厂商的控件绑死)、日后做其他网站项目都易于使用 (公司其他程序员,不必再改写一堆 jQuery、JavaScript、CSS)。
---------------------------------------------------------------
WizardWuUpload 上传文件(图片)
日期: 2015/02/19
版本: v1.1
---------------------------------------------------------------
示例代码下载点:

(稍后奉上)
(执行本示例,不用数据库,但需要 IIS 或 Visual Studio)
---------------------------------------------------------------
执行方式:

用 Visual Studio 或 IIS 开启网站,以任一种浏览器,执行 SingleUpload.html 或 MultiUpload.html。上传后的文件(图片),存放在 /uploadFiles 文件夹底下。
---------------------------------------------------------------

jQuery+AJAX实现网页无刷新上传
图 1 示例架构

---------------------------------------------------------------

jQuery+AJAX实现网页无刷新上传
图 2 执行画面 - 单一上传 & 引用蓝色CSS文件

jQuery+AJAX实现网页无刷新上传
图 3 执行画面 - 单一上传 & 引用绿色CSS文件

jQuery+AJAX实现网页无刷新上传
图 4 执行画面 - 复数上传 & 引用银色CSS文件

---------------------------------------------------------------
本示例的功能:

* 上传时用 jQuery 的 AJAX 处理,画面不会 refresh 刷新 (调用 jQuery Form 的 ajaxSubmit [5],异步地提交表单)。
* 可自订「上传按钮、进度条」的外观、引用您想要的 CSS (本示例提供:绿色、蓝色、银色,三种 CSS 文件可引用)。
* 上传期间,会显示进度条。
* 上传完后,会出现预览图。
* 上传完后,会出现「删除图片」超连接,可让用户删除刚上传的图片。
* 可限制上传图片的扩展名、文件大小的上限 (由 C# / WizardWuUpload.ashx 控制),并会给用户相关警示信息。
* 外观上 IE、FireFox、Chrome 都一致 (此点亦为 jQuery 的特性)。
* .html、.aspx 都可套用此示例。若为 PHP 或 JSP,需自行改写 WizardWuUpload.ashx,但不必改写 jQuery。

本示例的特性:

* 讲求实用、网站项目中易于套用,而非功能强大、外观华丽。
* 将 css、jQuery 抽出来成为独立的共用文件,方便项目中套用此示例,不必每一页重复撰写。
* 将页面上的 DOM 对象(控件) 的 id 特别命名过,方便项目中套用此示例。
---------------------------------------------------------------

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>无刷新上传文件 - 页面只有一个上传</title>
    <!--<link rel="stylesheet" href="css/WizardWuUpload_Blue.css" />-->
    <link rel="stylesheet" href="css/WizardWuUpload_Green.css" />
    <!--<link rel="stylesheet" href="css/WizardWuUpload_Silver.css" />-->

    <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="js/jquery.form.js"></script>
    <script type="text/javascript" src="js/WizardWuUpload.js"></script>
    <script type="text/javascript">
      $(function () {
        //?魅氲??担?樵? divUploadArea ?^?K中,所有 DOM 对象(控件) 的 id ??,如: divUploadArea1、spanUploadSelect1、WizardWuFileUpload1、...
        $(this).loadUploadContent('1'); //?入第一??上??^?K divUploadArea1 所需要的 form 及 jQuery ?热
      });
    </script>
</head>

<body>
  <h2>WizardWu 无刷新上传文件 - 页面只有一个上传</h2>
  <table>
    <tr>
      <td>
        <p>只允许上传 jpg/jpeg/gif/png/bmp 格式的图片,图片大小不能超过 1 MB</p>

        <div class="UploadArea" id="divUploadArea1">
          <div class="UploadButton">
            <span id="spanUploadSelect1">选择文件</span>
            <!--上传用的file控件-->
            <input id="WizardWuFileUpload1" type="file" name="此处name可随便命名,name名称可重复" />
          </div>
          <!--显示加载进度-->
          <div class="UploadProgress" id="divUploadProgress1">
            <span class="UploadBar" id="spanUploadBar1"></span><span class="UploadPercent" id="spanUploadPercent1">0%</span>
          </div>
          <!--显示已经上传的文件名、上传成功才会出现的「删除图片」字样超连接、删除成功才会出现的「删除成功」字样-->
          <div class="ShowContentAfterUploadSuccess" id="divShowContentAfterUploadSuccess1"></div>
          <!--显示已经上传的图片-->
          <div id="divShowImageAfterUploadSuccess1"></div>
        </div>
      </td>
    </tr>
  </table>
</body>
</html>

引用此示例的 html

---------------------------------------------------------------
ASP.NET 内附 FileUpload 控件的问题:

* 上传时画面会 refresh 刷新,无法套用 AJAX / UpdatePanel 相关功能。
* 控件的外观,被微软写死,无法透过引用 CSS 改变外观。
* Google Chrome 与 IE、FireFox,不同的浏览器,外观上呈现会不一致。
---------------------------------------------------------------
网路上 jQuery File Upload 的问题:

http://blueimp.github.io/jQuery-File-Upload/
* 功能强大、外观太复杂,想仅取出部分功能,来套用或改写有难度。
---------------------------------------------------------------

小伙伴们仔细研究下吧,希望大家能够喜欢本文。

Javascript 相关文章推荐
csdn 批量接受好友邀请
Feb 19 Javascript
JavaScript 撑出页面文字换行
Jun 15 Javascript
Javascript 读书笔记索引贴
Jan 11 Javascript
拖动table标题实现改变td的大小(css+js代码)
Apr 16 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
Nov 07 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
AngularJS学习笔记之TodoMVC的分析
Feb 22 #Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 #Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 #Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 #Javascript
js实现图片和链接文字同步切换特效的方法
Feb 20 #Javascript
jQuery实现渐变弹出层和弹出菜单的方法
Feb 20 #Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 #Javascript
You might like
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
js自定义input文件上传样式
2018/10/26 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
从零学Python之hello world
2014/05/21 Python
python批量提交沙箱问题实例
2014/10/08 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
Python检查ping终端的方法
2019/01/26 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
python字典按照value排序方法
2020/12/28 Python
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
数控专业推荐信范文
2013/12/02 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
技术比武方案
2014/05/19 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
python not运算符的实例用法
2021/06/30 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL