js HTML5上传示例代码完整版


Posted in Javascript onOctober 10, 2016

本身用flash插件一直上传,但是有很多场景不兼容,有些核心配置改不了,终于整理好了一个HTML5的版本,下面有传送门:

解决了几个客户需要的几个主要问题:

可多文件选择,有特效不死板
自定义提交参数
文件大小数量限制
*MD5校验
服务器反馈信息展示
可控制上传顺序
多视图切换

这里还是申明一下插件核心组件出处CFUpdate (0.8.2 Base)

HTML5 批量上传组件

HTML5版本,只要支持HTML5的浏览器都可以正常使用,并对触摸屏(手机,平板)进行了优化
IE9+ Firefox Chrome Opera Safari IPhone4 iPad2 Android 2.1

CFUpdate HTML5版本,只要支持HTML5的浏览器都可以正常使用,并对触摸屏(手机,平板)进行了优化
IE9+ Firefox Chrome Opera Safari IPhone4 iPad2 Android 2.1 —— [CFUpdate ]
代码块

调用方法 HTML代码:

<script type="text/javascript" src="CFUpdate.min.js" charset="utf-8"></script>
<div id="cfupdate" ></div>

主要配置参数的文件(Config.js)代码

function challs_flash_update(){ //初始化函数
 var a={};
 //定义变量为Object 类型

 a.title = "上传文件"; //设置组件头部名称

 a.FormName = "Filedata";
 //设置Form表单的文本域的Name属性

 a.url = "update.php"; 
 //设置服务器接收代码文件

 a.parameter = ""; 
 //设置提交参数,以GET形式提交,例:"key=value&key=value&..."

 a.typefile = "*.gif;*.png;*.jpg;*.jpeg;*.avi;";
 //设置可以上传文件 数组类型
 //"*.gif;*.png;*.jpg"为文件扩展名列表,其中列出用户选择要上载的文件时可以看到的 Windows 文件格式,以分号相隔

 a.UpSize = 0;
 //可限制传输文件总容量,0或负数为不限制,单位MB

 a.fileNum = 0;
 //可限制待传文件的数量,0或负数为不限制

 a.size = 2048;
 //上传单个文件限制大小,单位MB,可以填写小数类型

 a.FormID = ['select','select2'];
 //设置每次上传时将注册了ID的表单数据以POST形式发送到服务器
 //需要设置的FORM表单中checkbox,text,textarea,radio,select项目的ID值,radio组只需要一个设置ID即可
 //参数为数组类型,注意使用此参数必须有 challs_flash_FormData() 函数支持

 a.autoClose = 1;
 //上传完成条目,将自动删除已完成的条目,值为延迟时间,以秒为单位,当值为 -1 时不会自动关闭,注意:当参数CompleteClose为false时无效

 a.CompleteClose = true;
 //设置为true时,上传完成的条目,将也可以取消删除条目,这样参数 UpSize 将失效, 默认为false

 a.repeatFile = true;
 //设置为true时,可以过滤用户已经选择的重复文件,否则可以让用户多次选择上传同一个文件,默认为false


 a.MD5File = 1;
 //设置MD5文件签名模式,参数如下 ,注意:对大文件计算时会很慢,在无特殊需要时,请设置为0
 //0为关闭MD5计算签名
 //1为直接计算MD5签名后上传
 //2为计算签名,将签名提交服务器验证,在根据服务器反馈来执行上传或不上传
 //3为先提交文件基本信息,根据服务器反馈,执行MD5签名计算或直接上传,如果是要进行MD5计算,计算后,提交计算结果,在根据服务器反馈,来执行是否上传或不上传


 a.loadFileOrder=true;
 //选择的文件加载文件列表顺序,TRUE = 正序加载,FALSE = 倒序加载

 a.mixFileNum=0;
 //至少选择的文件数量,设置这个将限制文件列表最少正常数量(包括等待上传和已经上传)为设置的数量,才能点击上传,0为不限制

 a.ListShowType = 1;
 //文件列表显示类型:
 //1 = 传统列表显示,
 //2 = 缩略图列表显示(适用于图片专用上传)
 //5 = 极简模式
 //6 = 手机模式(适用于手机平板)
 //
 //3,4(保留暂无效果)


 a.TitleSwitch = true;
 //是否显示组件头部

 a.ForceFileNum = 0;
 //强制条目数量,已上传和待上传条目相加等于为设置的值(不包括上传失败的条目),否则不让上传, 0为不限制,设置限制后mixFileNum,autoClose和fileNum属性将无效!

 a.autoUpload = false;
 //设置为true时,用户选择文件后,直接开始上传,无需点击上传,默认为false;

 a.adjustOrder = true;
 //设置为true时,用户可以拖动列表,重新排列位置

 a.deleteAllShow = true
 //设置是否显示,全部清除按钮

 a.countData = true;
 //是否向服务器端提交组件文件列表统计信息,POST方式提交数据
 //access2008_box_info_max 列表总数量
 //access2008_box_info_upload 剩余数量 (包括当前上传条目)
 //access2008_box_info_over 已经上传完成数量 (不包括当前上传条目)

 a.isShowUploadButton = true;
 //是否显示上传按钮,默认为true

 a.isRotation = true;
 //是否可旋转图片
 //此项只有在缩略图模式下才有用
 //开启此项会POST一个图片角度到服务器端,由服务器端旋转图片
 //access2008_image_rotation 角度 0 到 -360


 a.isErrorStop = true;
 //遇见错误时,是否停止上传,如果为false时,忽略错误进入下一个上传


 return a ;
 //返回Object
}


function challs_flash_style(){ //组件颜色样式设置函数
 var a = {};

 /* 整体背景颜色样式 */
 a.backgroundColor=['#f6f6f6','#f3f8fd','#dbe5f1']; //颜色设置,3个颜色之间过度
 a.backgroundLineColor='#5576b8';     //组件外边框线颜色
 a.backgroundFontColor='#066AD1';     //组件最下面的文字颜色
 a.backgroundInsideColor='#FFFFFF';     //组件内框背景颜色
 a.backgroundInsideLineColor=['#e5edf5','#34629e']; //组件内框线颜色,2个颜色之间过度


 /* 头部颜色样式 */
 a.Top_backgroundColor=['#e0eaf4','#bcd1ea'];  //颜色设置,数组类型,2个颜色之间过度
 a.Top_fontColor='#245891';       //头部文字颜色


 /* 按钮颜色样式 */
 a.button_overColor=['#FBDAB5','#f3840d'];   //鼠标移上去时的背景颜色,2个颜色之间过度
 a.button_overLineColor='#e77702';     //鼠标移上去时的边框颜色
 a.button_overFontColor='#ffffff';     //鼠标移上去时的文字颜色
 a.button_outColor=['#ffffff','#dde8fe'];   //鼠标离开时的背景颜色,2个颜色之间过度
 a.button_outLineColor='#91bdef';     //鼠标离开时的边框颜色
 a.button_outFontColor='#245891';     //鼠标离开时的文字颜色

 /* 滚动条样式 */ 
 a.List_scrollBarColor=0x000000;    //滚动条颜色
 a.List_scrollBarGlowColor=0x34629e;   //滚动条阴影颜色

 /* 文件列表样式 */
 a.List_backgroundColor='#EAF0F8';     //列表背景色
 a.List_fontColor='#333333';      //列表文字颜色
 a.List_errFontColor='#ff0000';       //列表错误信息文字颜色
 a.List_LineColor='#B3CDF1';       //列表分割线颜色
 a.List_cancelOverFontColor='#ff0000';    //列表取消文字移上去时颜色
 a.List_cancelOutFontColor='#D76500';    //列表取消文字离开时颜色
 a.List_progressBarLineColor='#B3CDF1';    //进度条边框线颜色
 a.List_progressBarBackgroundColor='#D8E6F7';  //进度条背景颜色 
 a.List_progressBarColor=['#FFCC00','#FFFF00'];  //进度条进度颜色,2个颜色之间过度

 /* 错误提示框样式 */
 a.Err_backgroundColor='#C0D3EB';     //提示框背景色
 a.Err_fontColor='#245891';       //提示框文字颜色
 a.Err_shadowColor='#000000';      //提示框阴影颜色


 /* 手机模式专用样式 (ListShowType = 6)*/
 a.phone_backgroundColor = "#232323";   //手机模式背景色
 a.phone_backgroundFontColor = "#f6f6f6";  //手机模式字体颜色

 a.phone_top_font = 20;     //手机模式头部文字大小

 a.phone_button_font = 18;      //手机模式按钮文字大小
 a.phone_button_lineColor = "#2e2e2e";   //手机模式按钮边线色1

 a.phone_button_default_color = "#232323";  //手机模式按钮默认背景色
 a.phone_button_default_fontColor = "#f6f6f6"; //手机模式按钮默认字色

 a.phone_button_click_color = "#265259";   //手机模式按钮点击时背景色
 a.phone_button_click_fontColor = "#f6f6f6";  //手机模式按钮点击时字色

 a.phone_backgroundInsideColor = "#2e2e2e"; //手机模式内框背景颜色

 a.phone_List_backgroundColor = "#232323";   //手机模式列表背景色
 a.phone_List_progressBarBackgroundColor = "#166549"; //手机模式列表进度条颜色

 a.phone_List_name_font = 24;   //手机模式列表文件名字体大小
 a.phone_List_name_color = "#fff"; //手机模式列表文件名字体颜色

 a.phone_List_type_font = 18;  //手机模式列表状态字体大小
 a.phone_List_type_color = "#eee"; //手机模式列表状态字体颜色

 a.phone_List_Button_del_backgroundColor = "#e76e66"; //手机模式列表删除按钮背景色
 a.phone_List_Button_del_off_backgroundColor = "#666"; //手机模式列表删除按钮禁用下的背景色
 a.phone_List_Button_del_font = 20;   //手机模式列表删除按钮文本大小
 a.phone_List_Button_del_color = "#fff";  //手机模式列表删除按钮文本颜色

 return a;
}

function challs_flash_language(){ //组件文字设置函数
 var a = {
  // $[1]$ $[2]$ $[3]$是替换符号 
  // \n 是换行符号

  //按钮文字
  ButtonTxt_1:'停 止',
  ButtonTxt_2:'选择文件',
  ButtonTxt_3:'上 传',
  ButtonTxt_4:'清空',
  ButtonTxt_5:'删 除',

  //全局文字设置
  Font:'宋体',
  FontSize:12,

  //提示文字
  Alert_1:'初始化错误:\n\n没有找到 JAVASCRITP 函数 \n函数名为 challs_flash_update()',
  Alert_2:'初始化错误:\n\n函数 challs_flash_update() 返回类型必须是 "Object" 类型',
  Alert_3:'初始化错误:\n\n没有设置上传路径地址',
  Alert_4:'添加上传文件失败,\n\n不可以在添加更多的上传文件!',
  Alert_5:'添加上传文件失败,\n\n等待上传文件列表只能有$[1]$个,\n请先上传部分文件!',
  Alert_6:'提示信息:\n\n请再选择$[1]$个上传文件!',
  Alert_7:'提示信息:\n\n请至少再选择$[1]$个上传文件!',
  Alert_8:'请选择上传文件!',
  Alert_9:'上传错误:\n\n$[1]$',

  //界面文字
  Txt_5:'等待上传',
  Txt_6:'等待上传:$[1]$个 已上传:$[2]$个',
  Txt_7:'字节',
  Txt_8:'总量限制($[1]$MB),上传失败',
  Txt_9:'文件超过$[1]$MB,上传失败',
  Txt_10:'秒',
  Txt_11:'保存数据中...',
  Txt_12:'上传完毕',
  Txt_13:'文件加载错误',
  Txt_14:'扫描文件...',
  Txt_15:'验证文件...',
  Txt_16:'取消',
  Txt_17:'无图',
  Txt_18:'加载中',

  Txt_20:'关闭',
  Txt_21:'确定',
  Txt_22:'上传文件',

  //错误提示
  Err_1:'上传地址URL无效',
  Err_2:'服务器报错:$[1]$',
  Err_3:'上传失败,$[1]$',
  Err_4:'服务器提交效验错误',
  Err_5:'效验数据无效错误'
 };

 //英文
 // var a = {
 //  ButtonTxt_1:'Stop',
 //  ButtonTxt_2:'Add file',
 //  ButtonTxt_3:'Upload',
 //  ButtonTxt_4:'Empty',
 //  Font:'Arial',
 //  FontSize:12,
 //  Alert_1:'Initialization error:\n\nJAVASCRITP function not found \nthe name of the function is challs_flash_update()',
 //  Alert_2:'Initialization error:\n\nfunction challs_flash_update() return type must be "Object"',
 //  Alert_3:'Initialization error:\n\nUpload path address does not set',
 //  Alert_4:'Add files failed,\n\nno more files to add!',
 //  Alert_5:'Add files failed,\n\nthe number of files in list is no more than $[1]$,\nplease upload a part of files firstly!',
 //  Alert_6:'Message:\n\nplease select $[1]$ file(s) again!',
 //  Alert_7:'Message:\n\nplease select $[1]$ file(s) at least again!',
 //  Alert_8:'Please select file(s)!',
 //  Alert_9:'Error:\n\n$[1]$',
 //  Txt_5:'Waiting for upload',
 //  Txt_6:'Wait :$[1]$ upload:$[2]$ ',
 //  Txt_7:'Bite',
 //  Txt_8:'Total limit($[1]$MB),upload failed',
 //  Txt_9:'The filem is over($[1]$MB),upload failed',
 //  Txt_10:'S',
 //  Txt_11:'Saving data...',
 //  Txt_12:'Upload complished',
 //  Txt_13:'File load error',
 //  Txt_14:'Sacnning...',
 //  Txt_15:'Verifying...',
 //  Txt_16:'Cancel',
 //  Txt_17:'No Image',
 //  Txt_18:'Loading',
 //  Txt_20:'Close',
 //  Txt_21:'OK',
 //  Txt_22:'Upload Files',
 //  Err_1:'Address URL invalid',
 //  Err_2:'Server error:$[1]$',
 //  Err_3:'Upload error,$[1]$',
 //  Err_4:'Efficacy server submited error',
 //  Err_5:'Efficacy data invalid'

 // }

 return a;

}

遇到几个问题总结一下:
1.在上传文件的同时有form参数传递时,在这里配,可以多个 a.FormID = [‘参数名1','参数名2']; post提交,接收参数用request.getParameter(“参数名”)获取(java中这么写),官方给了PHP和ASP的例子,可以自己参考。

2.上传结束后服务器反馈信息,response.getWriter().print(”文件名:” + fileName + “文件大小:” + size+ “字节………等等更多信息”)自己组织。

最好给几张图:

js HTML5上传示例代码完整版

js HTML5上传示例代码完整版

js HTML5上传示例代码完整版

Java版本已经调试通过,项目使用Struts2,有类似遇到坑的同学可以留言联系我!!!PHP和ASP的版本可以下载官方包里面有例子。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
jQuery循环动画与获取组件尺寸的方法
Feb 02 Javascript
JS实现随机乱撞彩色圆球特效的方法
May 05 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
JavaScript中最常用的10种代码简写技巧总结
Jun 28 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
May 08 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
JavaScript  event对象整理及详细介绍
Oct 10 #Javascript
快速解决js开发下拉框中blur与click冲突
Oct 10 #Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 #Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 #Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
Oct 10 #Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 #Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 #Javascript
You might like
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
javascript 常用方法总结
2009/06/03 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
生成二维码方法汇总
2014/12/26 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
Python异常学习笔记
2015/02/03 Python
Djang中静态文件配置方法
2015/07/30 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
django基于restframework的CBV封装详解
2019/08/08 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python如何导入依赖包
2020/07/13 Python
举例讲解Python装饰器
2020/12/24 Python
百联网上商城:i百联
2017/01/28 全球购物
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
校园十大歌手策划书
2014/02/01 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python