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 type="text/javascript" src="file.js"></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>

 

//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;
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值