=波波日志 > JavaScript/Ajax > Firefox上传文件获取全路径问题=
[转]Firefox上传文件获取全路径问题
firefox上传文件时只能获取图片的文件名不能获取全路径,因此不能预览,怎么解决呢?
===========
firefox,ie7,ie8都是不能直接访问本地文件的。比如
下面为获取file控件全路径的一个功能
===========
firefox,ie7,ie8都是不能直接访问本地文件的。比如
+展开
会给你显示一个X,只有IE6下才有这个权限可以访问,高版本的浏览器出于安全考虑都已删除此项功能。-HTML
<img src="C:\Documents and Settings\Administrator.WWW-00E83A94D30\My Documents\My Pictures\winter.jpg"/>
下面为获取file控件全路径的一个功能
+展开
-JavaScript
var FilePath={
getFilePath: function (fileBrowser) {
if (navigator.userAgent.indexOf("MSIE") != -1){fileBrowser.select(); return document.selection.createRange().text; }
else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) return this.getFilePathWithFF(fileBrowser);
else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
},
getFilePathWithFF: function (fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
return;
}
var fileName = fileBrowser.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("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
return;
}
return file.path;
}
}
getFilePath: function (fileBrowser) {
if (navigator.userAgent.indexOf("MSIE") != -1){fileBrowser.select(); return document.selection.createRange().text; }
else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) return this.getFilePathWithFF(fileBrowser);
else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
},
getFilePathWithFF: function (fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
return;
}
var fileName = fileBrowser.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("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
return;
}
return file.path;
}
}
类别:JavaScript/Ajax 作者:转载 日期:2011-06-20 【评论:0】
相关文章
暂时没有评论!
发表留言
热门博文
- AJAX跨域问题解决办法
- ajax问题总结
- jQuery dataType指定为json的问题
- ajax+asp.net+mssql无刷新聊天室
- ajax无刷新上传文件,使用iframe模仿
- ajax对象abort方法
最新博文
- jquery+flash显示图片实时加载进度插件
- jquery浮动层拖动插件
- firefox NPMethod called on non-NPObject wrapped JSObject!错误
- IE浏览器setCapture和releaseCapture介绍
- 51.la统计出问题了
- 隐藏删除ckeditor状态栏
随机博文
- 模态窗口传值
- javascript 事件处理 IE和标准dom 的差别
- IE中的URL最大长度限制
- JavaScript操作XML (四)
- javascript中instanceof和类
- javascript解析xml文件函数列表
广告商赞助

