FileUpload 在FireFox 下的问题

老蒋 2009-09-22 04:54:15
<input id="FileUpload" type="file" runat="server" size="26"/>

在IE下,通过FileUpload.value可以获得完整的路径,在FireFox下只能得到文件名,我在网上查了相关的资料,一个说是用hidden 控件来保存值,二是说用netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
但是都是不可行的,请问应该如何解决???
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mxc1225 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wenblue7 的回复:]
楼主,正好我这几天解决了这个问题!!
而且是在多浏览器上可以实现的!!
网上好多方法,但是在Firefox,ie8等高一点版本的浏览器就失效了!
以下是方法,希望对你有用!
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<%-- <script type="text/javascript" src="Jscode/JScript.js"> </script>--%>
</head>
<body>
<input type="file" name="File" id="File" onchange='loadImage(this)' />
<input id='preview' type='button' value='预览' style='display:none;' onclick='preview();' />
<div id='box'> </div>
<script type="text/javascript">
var picPath;
var image;
// preview picture
function preview()
{
document.getElementById('preview').style.display = 'none';
// 下面代码用来获得图片尺寸,这样才能在IE下正常显示图片      "+image.width+"            "+image.height+"
document.getElementById('box').innerHTML
= " <img width='100' height='100' id='aPic' src='"+picPath+"'>";
}
// show view button
function buttonShow()
{
/*
这里用来解决图片加载延时造成的预览失败.
简单说明一下,当image对象的src属性发生改变时JavaScript会重新给image装载图片内容,
这通常是需要一些时间的,如果在加载完成之前想将图片显示出来就会造成错误,所以我们
通过图片的宽度和高度来判断图片是否已经被成功加载,加载完毕才会显示预览按钮.
这里我仍然有一个困惑,在IE7下预览效果偶尔会失效.
*/
if ( image.width == 0 || image.height == 0 ) {
setTimeout(buttonShow, 1000);
} else {
document.getElementById('preview').style.display = 'none';
}
}
function loadImage(ele) {
picPath = getPath(ele);
image = new Image();
image.src = picPath;
setTimeout(buttonShow, 1000);
document.getElementById("preview").click(); //在这里是自动触发那个预览按钮事件!!
}
function getPath(obj)
{
if(obj)
{
//ie
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
obj.select();
// IE下取得图片的本地路径
return document.selection.createRange().text;
}
//firefox
else if(window.navigator.userAgent.indexOf("Firefox")>=1)
{
if(obj.files)
{
// Firefox下取得的是图片的数据
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
</script>
</body>
</html>
[/Quote]
这不是我以前会你的帖子吗!?!?
http://topic.csdn.net/u/20090911/15/cabda000-f03b-4b5f-b099-2fb522d82f57.html
8楼的!
wenblue7 2009-09-23
  • 打赏
  • 举报
回复
楼主,正好我这几天解决了这个问题!!
而且是在多浏览器上可以实现的!!
网上好多方法,但是在Firefox,ie8等高一点版本的浏览器就失效了!
以下是方法,希望对你有用!
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<%-- <script type="text/javascript" src="Jscode/JScript.js"> </script>--%>
</head>
<body>
<input type="file" name="File" id="File" onchange='loadImage(this)' />
<input id='preview' type='button' value='预览' style='display:none;' onclick='preview();' />
<div id='box'> </div>
<script type="text/javascript">
var picPath;
var image;
// preview picture
function preview()
{
document.getElementById('preview').style.display = 'none';
// 下面代码用来获得图片尺寸,这样才能在IE下正常显示图片 "+image.width+" "+image.height+"
document.getElementById('box').innerHTML
= " <img width='100' height='100' id='aPic' src='"+picPath+"'>";
}
// show view button
function buttonShow()
{
/*
这里用来解决图片加载延时造成的预览失败.
简单说明一下,当image对象的src属性发生改变时JavaScript会重新给image装载图片内容,
这通常是需要一些时间的,如果在加载完成之前想将图片显示出来就会造成错误,所以我们
通过图片的宽度和高度来判断图片是否已经被成功加载,加载完毕才会显示预览按钮.
这里我仍然有一个困惑,在IE7下预览效果偶尔会失效.
*/
if ( image.width == 0 || image.height == 0 ) {
setTimeout(buttonShow, 1000);
} else {
document.getElementById('preview').style.display = 'none';
}
}
function loadImage(ele) {
picPath = getPath(ele);
image = new Image();
image.src = picPath;
setTimeout(buttonShow, 1000);
document.getElementById("preview").click(); //在这里是自动触发那个预览按钮事件!!
}
function getPath(obj)
{
if(obj)
{
//ie
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
obj.select();
// IE下取得图片的本地路径
return document.selection.createRange().text;
}
//firefox
else if(window.navigator.userAgent.indexOf("Firefox")>=1)
{
if(obj.files)
{
// Firefox下取得的是图片的数据
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
</script>
</body>
</html>
SK_Aqi 2009-09-23
  • 打赏
  • 举报
回复
党一直教育我们要 : "全部Copy"

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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