相信很多人都使用过<input type="file"/>这样的HTML控件,它看起来非常普通,是我们在做Web应用程序中用于上传客户端本地文件时不可缺少的控件,然而最近我发现这个控件在最新的FireFox浏览器(或者最新的IE8中也会存在这个问题,我没有尝试过,读者可以试一下)中却失去了效果,导致我们在通过这个控件的value属性得到的值中只包含了文件名而没有文件路径,这个在IE7中是可以正常获取到全文件名的(即文件完整路径+文件名)。IE7和大部分当前流行的浏览器(如FireFox2版本)都可以获取到文件的路径,但是FireFox3却不行,现在给出一点解法:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>path file Page</title>
<script type="text/javascript">
function readFile(fileBrowser) {
if (navigator.userAgent.indexOf("MSIE")!=-1) {
readFileIE();
}else if (navigator.userAgent.indexOf("MSIE")!=-1) {
readFileIE(fileBrowser);
} else if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Mozilla")!=-1) {
readFileFirefox(fileBrowser);
} else {
alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
}
}
function readFileIE(){
alert(document.form1.fileBrowser.value.toString());
}
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("Unable to access local files due to browser security settings");
}
var fileName=fileBrowser.value;
alert(fileName);
}
</script>
</head>
<body>
<form name="form1">
Browse to select a file
<input type="file" name="fileBrowser" size="125" onchange="readFile(this)" />
</form>
</body>
</html>
首先我们需要判断用户浏览器的类型来选择执行不同的function,IE中直接调用Scripting.FileSystemObject这个ActiveXObject,不过如果用户的IE没有打开“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”的话是不能执行这行代码的,在脚本中给出了提示,告诉用户必须将这个选项打开。 IE的问题不大,因为我们完全可以直接使用input的value值得到文件的路径,这里给出的方法主要是可以得到文件的二进制数据,重点看看在FireFox3中是如何做的。FireFox3中需要用户在配置页面中添加一个名称为signed.applets.codebase_principal_support的键值,将值设为true,然后就可以通过代码中给出的方法得到文件的本地路径了,同样也可以得到文件的二进制数据。
有关about:config和如何配置FireFox浏览器,读者可以参考下面的链接: http://www.cnblogs.com/looky/archive/2008/03/18/1111859.html 这样,我的问题就可以解决了,不管是在IE中,还是在FireFox中,我都可以获取到用户所选文件的本地路径,然后保存在页面的隐藏域中,当用户提交页面时,服务器端代码便可以通过页面隐藏域中的值得到用户所选择的文件的路径,从而上传文件到服务器。
相关推荐
要实现Firefox对ActiveX控件的支持,必须解决四个问题,包括如何创建和初始 化控件对象,如何在Firefox浏览器中显示和现场激活控件,如何使JavaScript能访问控 件的属性和方法以及如何捕获控件事件并将其转发给...
Firefox 29 - 完整包,下载后直接就能用,新手或懒得折腾的直接下载这个就行了 全新的重要自定义模式可轻松个性化您的Web体验,以访问您最常用的功能 Firefox的右上角有一个易于访问的新菜单,其中包含流行的...
firefox7.0及以上版本获取图片路径方法
关于如何从firefox中获取file控件里的实际路径的解决代码
另外还支持Firefox火狐浏览器URL的获取。支持效果极佳。 如果您还需要支持其它浏览器,请联系加我的QQ群:40308283 说明一点,软件是用delphi 7 开发的。绿色软件。 最新版本下载地址:...
以北恩U800耳式电话为例 准备: 在ocx文件夹中有以下文件...U800ocx - firefox.html 支持firefox的调用ocx控件的html文件 TypeLibraryExplorer.rar ocx文件查看器 FFOCX.zip 让FireFox支持OCX插件的安装包
美化firefox在linux中难看的表单控件
火狐(FireFox)风格的搜索条控件 Ver 1.0 ===================================================================================== 火狐(FireFox)风格托盘弹出通知框 Ver 2.0,一个模仿火狐(FireFox)搜索条...
Firefox火狐浏览器安装支付宝安全控件的方法.docx
Firefox 火狐浏览器 完整 安装包
日期控件,支持firefox,Ie,很小很巧
Firefox 52.0.2 渗透便携版 90SEC beta8 含多个文件 Firefox 52.0.2 渗透便携版 90SEC beta8 Firefox 52.0.2 渗透便携版 90SEC beta8 Firefox 52.0.2 渗透便携版 90SEC beta8 Firefox 52.0.2 渗透便携版 90SEC beta8...
Firefox填写表单扩展 安装方法很简单,直接拖拽到火狐浏览器窗口中然后根据提示操作即可。 随时关注最新版: http://code.google.com/p/ffextension/downloads 火狐官方下载地址: ...
firefox 支持ocx的插件包,可以在firefox里面支持ocx控件运行(firefox plugin ocx support package to support ocx controls run inside firefox)
ScrapBook for FireFox 1.5.14 ScrapBook for FireFox 1.3.7 直接用FIREFOX打开 XPI 文件即可
具体代码如下: 代码如下: <html> <head> <title>get file input full path</title> [removed] function getFullPath(obj) { if(obj) { //ie... } //firefox else if(window.navigator.userAge
经过三天的苦战,查询无数的国外网站终于实现了对IE和...利用API和DDE分别对IE和FireFox进行了浏览器地址获取,完整的源码程序,与大家分享学习。后期将完善,实现对IE,FireFox,360,搜狗等主流浏览器URL地址的监控。
受影响的包括uBlock Origin、AdGuard AdBlocker、AdBlock For Firefox、AdNauseam等广告拦截扩展。只有科学上网,去AdGuard或AdGuard AdBlocker英文网站主页安装这个插件。你也可以尝试下载这个离线安装插件,解压缩...
一篇很好的论文,研究了如何在本不支持activex控件的firefox环境中如何进行两者的兼容。
在Firefox下直接调用IE浏览器(IETab这个插件).zip