项目三、文件上传器v1.1
/**
* 自定义文件上传工具 v1.1
* @param url 路径
*/
function fileUploader(url) {
var _date = new Date(); //日期 this._container_ = null;
this._file_ = null; this._init_1 = function (_uploader) {
return function () {
//生成文件上传控件
var _file = document.createElement("input");
_file.setAttribute("type", "file");
_file.setAttribute("name", "file_" + _date.getTime());
_file.setAttribute("id", "file_" + _date.getTime());
_file.setAttribute("multiple", "multiple"); //生成容器
var _container = document.createElement("div");
_container.setAttribute("id", "div_" + _date.getTime());
_container.appendChild(_file); //添加事件响应,这种方法很独特
_file.addEventListener("change", function (_uploader) {
return function () {
_ajax(_uploader);
}
}(_uploader)); //将对象传出
_uploader._file_ = _file;
_uploader._container_ = _container; //初始状态
_uploader._file_.style.display = "block"; return _container;
}
}(this); /**
* 异步传输文件
* @param _uoloader 文件上传器
* @private
*/
function _ajax(_uploader) {
var _files = _uploader._file_.files;
//检查文件是否为空
if(_files.length == 0){
alert("请先选择文件!");
return;
} /*for(var i=0;i<_files.length;i++){
console.log(_files[i].name);
}*/ //循环上传文件
for(var i=0; i<_files.length; i++){
var _file = _files[i]; //创建xhr对象
var xhr = new XMLHttpRequest();
var _formData = new FormData();
_formData.append("file", _file); //生成上传进度条
var _progress = document.createElement("progress");
_progress.setAttribute("max", "100");
//生成文字标签
var _label = document.createElement("label");
_label.innerHTML = "正在上传"
//创建容器,并将进度条和标签添加到容器中
var _div = document.createElement("div");
_div.appendChild(_progress);
_div.appendChild(_label);
_div.style.display = "none"; //隐藏容器 _uploader._container_.appendChild(_div); //将容器添加到页面中 //状态变化相应处理
xhr.onreadystatechange = function (_div,_xhr) {
return function () {
//如果正准备上传
if(_xhr.readyState == 1){
_div.style.display = "block";
}
//如果上传完成
else if(_xhr.readyState == 4 && _xhr.status == 200){
_div.getElementsByTagName("label")[0].innerHTML = _xhr.responseText;
}
}
}(_div,xhr);
//上传进度处理
xhr.upload.onprogress = function (_pg) {
return function (event) {
var percentCompleted = Math.round(event.loaded * 100 / event.total);//计算上传百分比
_pg.setAttribute("value", percentCompleted); //显示在进度条上
}
}(_progress); xhr.open("POST", url, true); //打开连接
xhr.send(_formData); //发生文件
}
}
}
项目三、文件上传器v1.1的更多相关文章
- HTML5文件上传器,纯脚本无插件的客户端文件上传器---Uploader 文件上传器类
概述 客户端完全基于JavaScript的 浏览器文件上传器,不需要任何浏览器插件,但需要和jQuery框架协同工作,支持超大文件上传,其算法是将一个超大文件切片成N个数据块依次提交给服务 端处理,由 ...
- SpringBoot项目实现文件上传和邮件发送
前言 本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能. SpringBoot 文件上传 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要 ...
- JavaWeb项目实现文件上传动态显示进度
很久没有更新博客了,这段时间实在的忙的不可开交,项目马上就要上线了,要修补的东西太多了.当我在学习JavaWeb文件上传的时候,我就一直有一个疑问,网站上那些博客的图片是怎么上传的,因为当提交了表单之 ...
- jsp---》》》新闻发布系统的项目跟踪+++++++文件上传
先来一个分层架构图: WeebRoot目录下的页面: 现在,此项目以实现登录,注销,新闻列表,编辑主题>>>> 先来登录部分的关键代码 index.jsp中的代码 userIn ...
- web项目的文件上传和 下载
文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件 ...
- jQuery插件之路(三)——文件上传(支持拖拽上传)
好了,这次咱一改往日的作风,就不多说废话了,哈哈.先贴上源代码地址,点击获取.然后直接进入主题啦,当然,如果你觉得我有哪里写的不对或者欠妥的地方,欢迎留言指出.在附上一些代码之前,我们还是先来了解下, ...
- VUE项目中文件上传兼容IE9
项目使用VUE编写,UI是ElementUI,但是Element的Upload组件是不兼容IE9的.因为IE9中无法使用FormData. 查找资料基本有两种解决方法:1.引入JQuery和jQuer ...
- web自动化之selenium(三)文件上传
1.上传标签为input #若上传文件的标签为<input>可以直接定位标签,然后send_keys(文件路径)可以直接上传 2.利用第三方软件Autoit上传 1.下载Autoit:ht ...
- qxx项目大文件上传
1. 在做大文件上传的时候,要注意修改文件的配置,php.ini的配置,还有连接时间.这些东西都记不清了,明天需要问一下芳哥,然后遇到问题的时候就能自己解决了. 2. 然后就遇到一个很尴尬的问题:大文 ...
随机推荐
- Automatic Door CodeForces - 883A
大意: 一扇自动门, 若$t$时刻有人来, 并且门是关的, 自动门会打开$d$时间, [t,t+d]时刻来的人都可以进入, 现在有n个雇员, 分别在$a, 2a, ..., na$时刻来, $m$个客 ...
- 企业面试题|最常问的MySQL面试题集合(三)
分区表的原理 分库分表的原理 延伸: MySQL的复制原理及负载均衡 分区表的工作原理 对用户而言,分区表是一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区 ...
- Scala Partial Function从官方文档解析
A partial function of type PartialFunction[A, B] is a unary function where the domain does not neces ...
- Python3使运行暂停的方法
在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同. 1.input(); 这种方法不用包含模块,因此这也是最常用的一种暂停手段. Python2中的raw_in ...
- KVM虚拟化网卡管理
brctl常用命令 查看当前虚拟网桥状态 brctl show 添加一个网桥 addbr 删除一个网桥 delbr 添加网口 addif 删除网口 delif VALN LAN 表示 Local Ar ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-3
3 在骁龙上使用OpenCL 在今天安卓操作系统和IOT(Internet of Things)市场上,骁龙是性能最强的也是最被广泛使用的芯片.骁龙的手机平台将最好的组件组合在一起放到了单个芯片上,这 ...
- flex布局总结回顾
1.背景 传统css盒式模型,依赖 display属性 + position属性 + float属性实现页面的布局,而随着互联网的迅猛发展,带动了无数的互联网创业者和互联网产品,因而样式布局的美化成为 ...
- vue2.0 笔记(杂记)
一.vue class.style表达式的类型: 字符串.对象和数组1.字符串 <div class="static" v-bind:class="class-a& ...
- Python:JPG->JPEG
由于要在网页上使用图片渐进加载,所以需要将其他图片格式转化为JPEG格式 考虑使用python来实现批量转换 需要先安装pillow: pip install pillow 我这里将JPG格式转化为 ...
- 【BZOJ1999】树网的核
题目大意:题目过长,无法简单描述... 题解: 由于树网的核一定是树直径的一段,因此考虑先将直径取出,通过两次 BFS 即可.要求的东西是树上任意一点到这条取出的线段的距离的最大值,发现这个最大值有可 ...