如何获取Firefox浏览器中input类型为file的上传的绝对路径?

时间:2022-08-28 19:02:42
最近遇到一个比较艰难的问题,怎样获取火狐浏览器上传文件的绝对路径。上百度找很多的资料,大概理了一下思路:第一步是将signed.applets.codebase_principal_support的值设置为true之后,通过一下代码

try {
netscape.security.PrivilegeManager
.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert('请更改浏览器设置');
return;
}

var fname = document.getElementById("fileupload1").value;
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath(fname.replace(/\//g, "\\\\"));
} catch (e) {
if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH)
throw e;
alert('无法加载文件');
return;
}

alert(file.path); //取得文件路径
}

获取。 但是,我尝试的结果都是直接运行到了catch的部分,代码并没有往下执行。若无法获取绝对路径,虽然用表单的形式也可以上传文件,但是对于有需要的开发者,火狐浏览器难道就只挂“谢绝参观”?望各位技术大神指点迷津。蹭分者勿入此门~

6 个解决方案

#1


新手还没有学习到这里,希望能有大神来解答,如果楼主自己解决了,也请楼主能分享一下是怎么解决的

#2


据我了解是不可能的,file控件很难搞。你是想上传前显示缩略图把?用flash上传。

#3


运行到了哪个catch里啊?

#4


var url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
sourceId 是你的控件ID

#5


如果只是想获取图片的本地路径,可以肯定的说,js做不到。
如果想做上传前预览,直接上网找,一大把。

以前到是有人用flash+js做过,但后来flash也加强安全方面的限制,在本地可以用,网络上就用不了了。

#6


安全限制  应该不行

#1


新手还没有学习到这里,希望能有大神来解答,如果楼主自己解决了,也请楼主能分享一下是怎么解决的

#2


据我了解是不可能的,file控件很难搞。你是想上传前显示缩略图把?用flash上传。

#3


运行到了哪个catch里啊?

#4


var url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
sourceId 是你的控件ID

#5


如果只是想获取图片的本地路径,可以肯定的说,js做不到。
如果想做上传前预览,直接上网找,一大把。

以前到是有人用flash+js做过,但后来flash也加强安全方面的限制,在本地可以用,网络上就用不了了。

#6


安全限制  应该不行