js获取文件域完整路径

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS获取文件域完整路径的方法,兼容不同浏览器</title>
<script>
//ff获取文件路径方法
function getPathFromFF(obj) {
try {
netscape.security.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:\n'
+ '(1)在地址栏输入"about:config";\n(2)右键点击并选择 New->Boolean;\n'
+ '(3)输入"signed.applets.codebase_principal_support"(不含引号)作为一个新的首选项的名称;\n'
+ '(4)点击OK并试着重新加载文件。');
return;
}
var fileName = obj.value; // 这一步就能得到客户端完整路径
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath(fileName.replace(/\//g, "\\\\"));
} catch (e) {
if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert("无法加载文件" + fileName + ":不允许使用相对路径,请提供一个绝对路径的文件。");
return;
}
if (file.exists() == false) {
alert("没找到文件" + fileName);
return;
}
return {
path : file.path,
size : obj.files[0].size
};
}


// ie获取文件路径方法
function getPathFromIE(obj, version) {
try {
if (version <= "6.0") {// ie5.5,ie6.0
path = obj.value;
} else if (version >= "7.0") {// ie7,ie8
obj.select();
path = document.selection.createRange().text;
document.selection.empty();
}
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var file = fileSystem.GetFile(path);
return {
path : path,
size : file.size
};
} catch (e) {
alert(e.message);
return;
}
}


// 根据不同浏览器获取路径
function getPath(obj) {
// 判断浏览器
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : 
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : 0;


if (Sys.ie) {// ie
return getPathFromIE(obj, Sys.ie);
} else if (Sys.firefox) {// ff
// path = obj.files[0].getAsDataURL();//获取的路径为ff识别的加密字符串
return getPathFromFF(obj);
} else {
alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
return;
}
}

</script>


<script type="text/javascript">
function showPath(obj) {
var fileInfo = getPath(obj);
if (fileInfo){
alert(fileInfo.path + ":" + fileInfo.size);
}
}
</script>
</head>
<body>
<input type="file" οnchange="showPath(this);" />
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值