js获取文件域完整路径

来源:互联网 发布:搜索引擎seo基本理念 编辑:程序博客网 时间:2024/05/01 02:50
<!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" onchange="showPath(this);" />
</body>
</html>
原创粉丝点击