项目三、文件上传器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. 然后就遇到一个很尴尬的问题:大文 ...
随机推荐
- Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]
题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...
- qt json操作
json文件结构形式 { "xiao1": [ { "000100": { " ...
- wex5 如何使用蓝牙 ble
使用蓝牙插件 需要在js中添加 require("cordova!cordova-plugin-ble-central"); ble插件具体文档: http://docs.we ...
- 剑指offer-8:链表中倒数第k个结点
转:https://blog.csdn.net/yjw123456/article/details/81061541 一.解题思路 两个指针p1,p2,开始都指向头结点 * 先让p2走k步 * 然后p ...
- HTML-简单动画
简单动画 (1)简单动画通常称之为“过渡transition” Transition-property:需要过渡的属性,但是并非所有的属性都支持过渡. Transition-duration:过渡的时 ...
- ios / % 四舍五入 向上取整(ceil()) 向下取整(floor())
1. / //Test "/" cout << "Test \"/\"!" << endl; cout ...
- nginx web优化
一 隐藏版本号 在nginx配置文件http里面添加: server_tokens off; 二 设置nginx默认登入用户 nginx编译安装的时候 事先创一个不能登入系统的普通用户 使用普 ...
- Java基本的程序结构设计 整形和浮点型
整形: int 4字节 short 2字节 long 8字节 byte 1字节 int的大小差不多是20亿. 整形计算 如果两个int进行加减乘除数学运算的时候,最终的结果仍然是int,有可能出现了溢 ...
- SP Flash Tool版本对应MTK处理器型号(SP Flash Tool 版本速查)
SP Flash Tool v3.1224.0.100 MT6516,MT6573,MT6573,MT6575,MT6575,MT6577, SP Flash Tool v3.1332.0.187 M ...
- C标签的用法
今天做jsp页面,发现无法将后台传过来的时间戳转换成正常的时间格式,于是就想到了C标签,顺便把C标签总结一下 1.引入C标签 <%@ taglib uri="http://java.s ...