1. <script type="text/javascript">
  2. function getPath(obj) {
  3. if (obj) {
  4. if (window.navigator.userAgent.indexOf("MSIE") >= ) {
  5. obj.select(); return document.selection.createRange().text;
  6. }
  7. else if (window.navigator.userAgent.indexOf("Firefox") >= ) {
  8. if (obj.files) {
  9. return obj.files.item().getAsDataURL();
  10. }
  11. return obj.value;
  12. }
  13. return obj.value;
  14. }
  15. }
  16.  
  17. //以下即为完整客户端路径
  18. var filepath=getPath(document.getElementById("iptfileupload"));
  19. </script>
  20.  
  21. 第二种解决方案:
  1.  
  1. <script type="text/javascript">
  2. //FX获取文件路径方法
  3. function readFileFirefox(fileBrowser) {
  4. try {
  5. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  6. }
  7. catch (e) {
  8. alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择 New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件');
  9. return;
  10. }
  11. var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。
  12. var file = Components.classes["@mozilla.org/file/local;1"]
  13. .createInstance(Components.interfaces.nsILocalFile);
  14. try {
  15. // Back slashes for windows
  16. file.initWithPath( fileName.replace(/\//g, "\\\\") );
  17. }
  18. catch(e) {
  19. if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
  20. alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
  21. return;
  22. }
  23. if ( file.exists() == false ) {
  24. alert("File '" + fileName + "' not found.");
  25. return;
  26. }
  27. return file.path;
  28. }
  29. //根据不同浏览器获取路径
  30. function getvl(){
  31. //判断浏览器
  32. var Sys = {};
  33. var ua = navigator.userAgent.toLowerCase();
  34. var s;
  35. (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
  36. (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
  37. (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
  38. (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
  39. (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
  40. var file_url="";
  41. if(Sys.ie<="6.0"){
  42. //ie5.5,ie6.0
  43. file_url = document.getElementById("file").value;
  44. }else if(Sys.ie>="7.0"){
  45. //ie7,ie8
  46. var file = document.getElementById("file");
  47. file.select();
  48. file_url = document.selection.createRange().text;
  49. }else if(Sys.firefox){
  50. //fx
  51. //file_url = document.getElementById("file").files[0].getAsDataURL();//获取的路径为FF识别的加密字符串
  52. file_url = readFileFirefox(document.getElementById("file"));
  53. }
  54. //alert(file_url);
  55. document.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url;
  56. }
  57. </script>
  58. <h1>JS获取文件域完整路径的方法,兼容不同浏览器</h1>
  59. <div id="text" style="color:#f00;"></div>
  60. <input type="file" id="file" />
  61. <input name="" type="button" value="获取" onClick="getvl();">
  1.  
  1.  

IE8上传文件时javascript读取文件的本地路径的问题("C:\fakepath\")的解决方案的更多相关文章

  1. 文件上传~Uploadify上传控件~续(多文件上传)

    对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Upload ...

  2. IE8上传文件时文件本地路径变成"C:\fakepath\"的问题

    转自:http://yunzhu.iteye.com/blog/1116893 在使用<input id="file_upl" type="file" / ...

  3. C# 文件操作(上传,下载,读取,写入)

    1. 通过byte[]数据下载文件(这种方法可用于以开放Api的形式传递文件内容) public void FileDownLoadByByte(byte[] fileData, string fil ...

  4. [CISCN2019 华北赛区 Day1 Web1]Dropbox-phar文件能够上传到服务器端实现任意文件读取

    0x00知识点 phar是什么: 我们先来了解一下流包装 大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,zlib://或php://.例如常见的 include('php ...

  5. HTML5 文件域+FileReader 读取文件并上传到服务器(三)

    一.读取文件为blob并上传到服务器 HTML <div class="container"> <!--读取要上传的文件--> <input type ...

  6. 通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等

    记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...

  7. 通过 File API 使用 JavaScript 读取文件

    原文地址:http://www.html5rocks.com/zh/tutorials/file/dndfiles/ 简介 HTML5 终于为我们提供了一种通过 File API 规范与本地文件交互的 ...

  8. 表单多文件上传样式美化 && 支持选中文件后删除相关项

    开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...

  9. 前端上传视频、图片、文件等大文件 组件Plupload使用指南

    demo:https://blog.csdn.net/qq_30100043/article/details/78491993 Plupload上传插件中文帮助文档网址:http://www.phpi ...

随机推荐

  1. ireport 取消自动分页,detail不分页,当没有数据的时候显示title

    报表文件属性页面 lgnore pagination 勾选上,就可以取消分页功能.

  2. UILabel自适应高度

    在网上看了一些,发现很多关于自适应高度的,不能用,就在下面写一种我常用的吧!保证可以直接粘贴复制到Xcode中运行. UILabel *label = [[UILabel alloc] init]; ...

  3. 无锁同步-JAVA之Volatile、Atomic和CAS

    1.概要 本文是无锁同步系列文章的第二篇,主要探讨JAVA中的原子操作,以及如何进行无锁同步. 关于JAVA中的原子操作,我们很容易想到的是Volatile变量.java.util.concurren ...

  4. sublime text2的插件熟悉

    今天加班,开会.于是整理下sublime text的插件. 1.安装了tag插件.负责html的格式化.从百度云下载了文件,放入了插件包的目录下. 2.启用了alignment 快捷键 ctr+alt ...

  5. make 要点简记

    make 要点简记 1.隐式推导 make可以自动推导文件及其文件依赖关系后面的命令,所以我们没有必要在每一个.o文件后面都写上类似的命令,因为make 会自动识别并且自动推导命令. objects ...

  6. 1)Linux学习笔记:crontab命令

    crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 配置文件 ``` SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin: ...

  7. 前端开发 Grunt 之 Connect详解

    在前端开发过程中,我们需要在开发过程中,将开发中的站点部署到服务器上,然后,在浏览器中查看实际的效果,在 Grunt 环境下,可以直接使用集成在 Grunt 中的 Connect 插件完成站点服务器的 ...

  8. multipathd dead but pid file exists

    构建RAC环境时出现的错误 百度半天未找到解决方案,Google了一下,终于找到可行方案 Solution:- yum update device-mapper glibc -y [root@HE2 ...

  9. c#中struct和class的区别

    1.struct 是值类型,class是对象类型 2.struct 不能被继承,class可以被继承 3.struct 默认的访问权限是public,而class默认的访问权限是private. 4. ...

  10. HTML 5 Web 存储、应用程序缓存、Web Workers

    在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...