Firefox fileupload绝对路径

invoked 2010-07-05 01:06:29
在线等,FX3的fileupload取value的老问题,望能解决,谢谢大家。


<html>
<head>
<title>get file input full path</title>
<script type="text/javascript">
function getid(id) {
return document.getElementById(id);
}

function loadfile(){
getid("uploadedFile").onchange=function(){
getid("uploadedFileText").value=getid("uploadedFile").value;
};
}
window.onload=loadfile;
</script>
</head>
<body>
<input type="text" readonly="true" id="uploadedFileText" title="upload file"/>
<input type="file" name="uploadedFile" id="uploadedFile">
</body>
</html>

...全文
458 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xj032085 2011-07-17
  • 打赏
  • 举报
回复
最近也碰到这个问题,直接用input的file获取的是完整的路径,但是用onchange事件获取的只是文件名了,应该是ff做了处理了,郁闷。
rainsilence 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ibm_hoojo 的回复:]

CSS code

IE下倒是可以获得上传文件file的路径的。
lz是否可以考虑在服务器端得到路径,然后在客户端用ajax返回!
[/Quote]

ls有试过吗?服务器端只能得到服务器上文件的路径。跟客户端无关!!!!!
invoked 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 theforever 的回复:]

我给你的代码,就是我找到的专门解决FF里如何取绝对路径即全文件名的。

“先说说在FireFox3中如何上传一个文件吧。既然FireFox3中将获取本地文件的路径的方法当做一个安全隐患被禁止了,那么它一定有相关的方法来解决这个问题,否则FireFox3就不能实现在客户端上传文件的功能了。其实FireFox3中引入了一个新的接口用来解决这个问题,那就是nsIDOMFile,它专门被用来从客户端……
[/Quote]
谢谢这位朋友,但是这种方式是更改客户端配置的做法,也是客户最忌讳之一。
我上Firefox的开发人员论坛看过,解释说之所以会在3.0之后将fileName.value只保留文件名,是避免客户端有人非法上传文件至服务器...... 唏嘘一下
哎,就这样吧,firefox既然已经这样设计fileupload了,找其他方法从客户角度来说是不太和谐的,今天匆忙发这样的帖子。
再次谢谢大家,结贴。
cloudgamer 2010-07-05
  • 打赏
  • 举报
回复
ls有自己试过吗
  • 打赏
  • 举报
回复
使用这个方法,首先要区分浏览器,根据浏览器调用不同的方法。IE就用你原来的方法。
  • 打赏
  • 举报
回复
我给你的代码,就是我找到的专门解决FF里如何取绝对路径即全文件名的。

“先说说在FireFox3中如何上传一个文件吧。既然FireFox3中将获取本地文件的路径的方法当做一个安全隐患被禁止了,那么它一定有相关的方法来解决这个问题,否则FireFox3就不能实现在客户端上传文件的功能了。其实FireFox3中引入了一个新的接口用来解决这个问题,那就是nsIDOMFile,它专门被用来从客户端的input type="file"的控件中获取文件数据,这样就可以将本地的文件保存到服务器上。这是一个非常好的解决办法,以至于我们在FireFox3中开发这样的应用程序时,比先前简单获取value值然后再通过服务器端代码上传文件要简单许多,不过令人担忧的是,这个接口只适用于FireFox,在IE和其它的浏览器中并不支持。”

所以说,你除了尝试修改一下(我没有详细测试,不喜欢来回切换浏览器)上面我给的代码,就得多找找别的方法了。
invoked 2010-07-05
  • 打赏
  • 举报
回复
谢谢大家,这个问题我需要和客户沟通一下。
hoojo 2010-07-05
  • 打赏
  • 举报
回复

IE下倒是可以获得上传文件file的路径的。
lz是否可以考虑在服务器端得到路径,然后在客户端用ajax返回!
gghaomm 2010-07-05
  • 打赏
  • 举报
回复
ff不行的.请问楼主为什么非要这个地址列?放到服务器上 这个地址没什么意义的吧.
passself 2010-07-05
  • 打赏
  • 举报
回复
楼主这个在ff下,好像是不可以的
cloudgamer 2010-07-05
  • 打赏
  • 举报
回复
没办法
除非你能说服ff搞这个出来
invoked 2010-07-05
  • 打赏
  • 举报
回复
谢谢楼上朋友的回复,这个我是知道,我现在要取人能够识别的绝对路径。
rainsilence 2010-07-05
  • 打赏
  • 举报
回复
绝对路径就是document.getElementById('my-file').files.item(0).getAsDataURL()
只不过是被FF加过密的。也就是说,显示出来给人看是看不懂的。但是如果传给img标签,他是认的
invoked 2010-07-05
  • 打赏
  • 举报
回复
谢谢上面的兄弟,但改客户端是很不现实的。
xshf12345 2010-07-05
  • 打赏
  • 举报
回复
invoked 2010-07-05
  • 打赏
  • 举报
回复
楼上的兄弟可能没理解我的意思,我是要将fx下file空间的绝对路径取出来
  • 打赏
  • 举报
回复
getid是取ID的意思,应改成getById。
<script type="text/javascript">
// <![CDATA[
function inputFileOnChange() {
if(document.getElementById('my-file').files) {
// Support: nsIDOMFile, nsIDOMFileList
alert('value: ' + document.getElementById('my-file').value);
alert('files.length: ' + document.getElementById('my-file').files.length);
alert('fileName: ' + document.getElementById('my-file').files.item(0).fileName);
alert('fileSize: ' + document.getElementById('my-file').files.item(0).fileSize);
alert('dataurl: ' + document.getElementById('my-file').files.item(0).getAsDataURL());
alert('data: ' + document.getElementById('my-file').files.item(0).getAsBinary());
alert('datatext: ' + document.getElementById('my-file').files.item(0).getAsText("utf-8"));
};
};
// ]]>
</script>
<div>
<input type="file" name="my-file" id="my-file" onchange="inputFileOnChange();" />
</div>

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧