在.net里为什么js获取到的FileUpload的路径是C:\fakepath\ 无论怎么取都是C:\fakepath\+文件名
网上说:工具->Internet选项->安全->自定义级别->找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。这样不现实,不可能让每个用户...
网上说:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。这样不现实,不可能让每个用户都去改这个。
还有说用getPath(obj) 这个方法的,用了没效果,还是C:\fakepath\+文件名,这样的。如下:
<script type="text/javascript" language="javascript">
function test(){
document.getElementById("FileUpload1").style.display = "none";
document.getElementById("FileUpload1").click();
}
function test2() {
var filePath = getPath(document.getElementById("FileUpload1"));
document.getElementById("TextBox1").text = filePath;
document.getElementById("FileUpload1").style.display = "none";
}
function getPath(obj) {
if (obj) {
if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
obj.select();
return document.selection.createRange().text; }
else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
if (obj.files) {
return obj.files.item(0).getAsDataURL(); }
return obj.value;
} return obj.value; } }
</script>
页面中:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload>
<input id="Button1" type="button" value="浏览" onclick="test();"/>
protected void Page_Load(object sender, EventArgs e)
{
this.FileUpload1.Style.Add("display", "none");
this.FileUpload1.Attributes.Add("onchange", "test2();");
}
我是想把FileUpload1选择的文件路径和名字显示在TextBox中,而它一直显示的是C:\fakepath\+文件名,比如我选择的是桌面上的文件,他都是显示的是C:\fakepath\+文件名。 展开
还有说用getPath(obj) 这个方法的,用了没效果,还是C:\fakepath\+文件名,这样的。如下:
<script type="text/javascript" language="javascript">
function test(){
document.getElementById("FileUpload1").style.display = "none";
document.getElementById("FileUpload1").click();
}
function test2() {
var filePath = getPath(document.getElementById("FileUpload1"));
document.getElementById("TextBox1").text = filePath;
document.getElementById("FileUpload1").style.display = "none";
}
function getPath(obj) {
if (obj) {
if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
obj.select();
return document.selection.createRange().text; }
else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
if (obj.files) {
return obj.files.item(0).getAsDataURL(); }
return obj.value;
} return obj.value; } }
</script>
页面中:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:FileUpload id="FileUpload1" runat="server"> </asp:FileUpload>
<input id="Button1" type="button" value="浏览" onclick="test();"/>
protected void Page_Load(object sender, EventArgs e)
{
this.FileUpload1.Style.Add("display", "none");
this.FileUpload1.Attributes.Add("onchange", "test2();");
}
我是想把FileUpload1选择的文件路径和名字显示在TextBox中,而它一直显示的是C:\fakepath\+文件名,比如我选择的是桌面上的文件,他都是显示的是C:\fakepath\+文件名。 展开
2个回答
展开全部
你好!
fileupload理论上不设置浏览器是不可能取到本地路径的。
你可以想想,如果用fileupload可以轻易获取到本地路径,那别人随便写个程序,不就可以把你本地的各种文件遍历传到服务器了,那不就可以随便盗取文件了。
所以一般是换一种做法,用一个textbox存储路径,用一个button完成上传功能。至于上传的代码方法多了。一种是用stream类,一种是用WebClient上传,方法很多的。
fileupload理论上不设置浏览器是不可能取到本地路径的。
你可以想想,如果用fileupload可以轻易获取到本地路径,那别人随便写个程序,不就可以把你本地的各种文件遍历传到服务器了,那不就可以随便盗取文件了。
所以一般是换一种做法,用一个textbox存储路径,用一个button完成上传功能。至于上传的代码方法多了。一种是用stream类,一种是用WebClient上传,方法很多的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想要什么效果??
更多追问追答
追问
额,忘了说,就是在TextBox1中显示文件在本地的路径和名字。而显示的一直是C:\fakepath\+文件名,
追答
我认为要换方法实现你要的功能,以上的getPath是针对浏览器的,有的浏览器不行,为什么要这个path呢? 你准备做什么? 肯定有别的方法实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询