使用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 相关文章推荐
用js实现多域名不同文件的调用方法
Jan 12 Javascript
jQuery选中select控件 无法设置selected的解决方法
Sep 01 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
May 04 Javascript
javascript实现随机读取数组的方法
Aug 03 Javascript
详解JavaScript时间格式化
Dec 23 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
基于html+css+js实现简易计算器代码实例
Feb 28 Javascript
JavaScript实现简单验证码
Aug 24 Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
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
无线电广播的开始
2002/01/30 无线电
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php算法实例分享
2015/07/14 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
自我鉴定范文300字
2013/10/01 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
2015年项目工作总结
2015/04/29 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫