使用JS进行目录上传(相当于批量上传)


Posted in Javascript onDecember 05, 2010
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>测试文件上传</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
$(function(){ 
//ShowFolderFileList("D:\\CodeNet\\web\\Images\\shopTemplets"); 
}); 
function ShowFolderFileList(FilePath){ 
var fso, f, fc, sf; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
try{ 
f = fso.GetFolder(FilePath); 
}catch(err){ 
alert("文件路径错误或者不存在!!"); 
return false; 
} 
// 列出所有文件 
fc = new Enumerator(f.files); 
var fileName = ""; 
for(;!fc.atEnd();fc.moveNext()){ 
fileName=fc.item().Name; 
$('<div filePath="' + FilePath + fileName + '" uploadState="wait">' + FilePath + fileName + '</div>').appendTo('#showArea'); 
} 
// 循环 递归 读取 文件夹的文件 
sf = new Enumerator(f.SubFolders); 
var folderName = ""; 
for(;!sf.atEnd();sf.moveNext()){ 
folderName = sf.item().Name; 
ShowFolderFileList(FilePath + folderName + "/"); 
} 
} 
function startUpload(){ 
var s = $('#uploaddir').val().replace( /\\/gi, '/' ) ; 
if(s.substring(s.length - 1 , s.length) != '/'){ 
s += '/' 
} 
ShowFolderFileList(s) 
uploadFile(); 
} 
// 上传 
function uploadFile(){ 
if($('#showArea div[uploadState=wait]').length > 0){ 
var thisNode = $('#showArea div[uploadState=wait]').eq(0) 
var WshShell=new ActiveXObject("WScript.Shell"); 
$('#fileupload').focus(); 
WshShell.SendKeys($(thisNode).attr('filePath')); // 路径中不有是中文 
uploadForm.submit(); 
$('#fileupload').focus(); 
$('#fileupload').get(0).createTextRange().select(); 
WshShell.SendKeys('{del}'); 
var dotStr = '.'; 
$('<span></span>').appendTo(thisNode).css('color', 'green'); 
var uploadState = setInterval(function(){ 
if($(thisNode).attr('uploadState') == 'ok'){ 
clearInterval(uploadState); 
$(thisNode).find('span').css('color', 'red').text('(完成)'); 
uploadFile(); 
}else{ 
if(dotStr.length > 15){ dotStr = '.'; }else{ dotStr += '.'; } 
$(thisNode).find('span').text('(上传中' + dotStr + ')'); 
} 
}, 1000); 
} 
} 
// 在iframe 的返回页面中调用此函数 即可实现循环上传,,否则为死循环 
function uploadFinish(){ 
$('#showArea div[uploadState=wait]').eq(0).attr('uploadState', 'ok'); 
} 
</script> 
<style type="text/css"> 
body,td,th { 
font-family: "微软雅黑", Tahoma, Helvetica, Arial, \5b8b\4f53, sans-serif; 
} 
</style> 
</head> 
<body> 
<form action="/a.html" method="post" name="loginForm" style="margin:0 0; padding:0 0;"> 
<input name="uploaddir" id="uploaddir" type="text" value="D:\a" style="width:800px;" /> 
<input type="button" value="开始" id="startIt" name="startIt" onclick="javascript:startUpload();"/> 
</form> 
<form action="/index/upload" method="post" name="uploadForm" enctype="multipart/form-data" target="hidden_frame"> 
<input type="file" name="fileupload" id="fileupload" /> 
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe> 
</form> 
</iframe> 
<div id="showArea"> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
JavaScript 设计模式学习 Singleton
Jul 27 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 Javascript
jQuery返回定位插件详解
May 15 jQuery
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
在vue中使用jointjs的方法
Mar 24 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
Echarts如何重新渲染实例详解
May 30 Javascript
js对象的构造和继承实现代码
Dec 05 #Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 #Javascript
script标签的 charset 属性使用说明
Dec 04 #Javascript
本地对象Array的原型扩展实现代码
Dec 04 #Javascript
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 #Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 #Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
Dec 04 #Javascript
You might like
PHP 数字左侧自动补0
2008/03/31 PHP
apache php模块整合操作指南
2012/11/16 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
nodejs基础知识
2017/02/03 NodeJs
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
vue 登录滑动验证实现代码
2018/08/24 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python读取word文本操作详解
2018/01/22 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python实现剪切功能
2019/01/23 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
Python使用type动态创建类操作示例
2020/02/29 Python
怎么样写好简历中的自我评价
2013/10/25 职场文书
预备党员党校学习自我评价分享
2013/11/12 职场文书
水污染治理专业毕业生推荐信
2013/11/14 职场文书
校园安全广播稿
2014/02/08 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
化学教育专业自荐信
2014/07/04 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
房屋租房协议书范本
2014/12/04 职场文书
历史博物馆观后感
2015/06/05 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
win10搭建配置ftp服务器的方法
2022/08/05 Servers