关于如何让File控件不传文件的问题。

crackzzy 2003-08-24 03:39:31
我在做一个页面的时候需要取得一个文件名。但是这个文件名总不能让用户输入,于是我想在页面上放一个File控件以方便用户选择文件。但是这样一来选中的文件就必须被上传。文件小还无所谓。但是我这里需要用到的文件都是几百个M的大文件,用POST的方法根本传不过去。仅仅为了取一个文件名而费那么大劲不值得。请问高手有没有什么好的取文件名的方法?比如前台有没有别的什么类似File的控件可以取文件名的,或者有没有什么方法让File控件能选文件,而且也能把文件名POST到服务器,但是不上传文件的?求解……
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
我彻底服了!
saucer 2003-08-24
  • 打赏
  • 举报
回复
you are wrong, you cannot do
document.all.InputFile.value="";

since the browser doesn't allow you to set a value to <input type=file>

your method is probably better, my method was a "hack" like I said earlier
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
不好意思,好象是看走眼了。原来是reset表单哦。
不过这样又带来一个问题。
如果在用户点浏览按钮选择文件以前已经在表单里填写过一些东西了,那么这些东西不也全部重置了吗?不过现在想到好象可以用临时变量来解决噢~~
document.all.InputFile.click();
var filepath=document.all.InputFile.value;
document.all.InputFile.value="";
document.all.FilePath.value=filepath;
这样应该就可以了吧。
不过我想我的方法应该也不赖吧,呵呵~反正都解决问题了~
感谢思归第二次光顾这篇帖子~~我还以为你会因回复过了而不再光顾了呢~~
saucer 2003-08-24
  • 打赏
  • 举报
回复
you didn't read my code carefully, I used this.form.reset() to reset the value, so the file will not be uploaded since there is none
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
这个问题我已经解决了。
原来就算file控件不放在form里也能被浏览器访问。
我的浏览器是IE6.0,不知道5.0是否支持,我这里没有5.0,也没有办法去研究。
下面帖出我的代码供大家参考:
<html>
<head>
function ShowDialog()
{
document.all.InputFile.click();
var filepath=document.all.InputFile.value;
//document.all.InputFile.reset();//我查DHTML手册上input type=file好象没有reset()方法。不过是否调用这个方法在这里不受影响。
document.all.FilePath.value=filepath;
}
</head>
<body>
<input id="InputFile" type="file" style="display:none;">
<form runat="server">
文件名:<input id="FilePath" type="text" size="50" class="textbox" runat="server"/> <input id="GetFileName" type="button" value="浏览" onclick="ShowDialog();">
</form>
</body>
</html>
感谢思归,这篇帖子我就在这里留两天,让碰到类似问题的朋友能有一个解决的思路。
欢迎大家一起讨论~
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
感谢思归的回复。
代码我还没来及测试,不过我估计可能有点行不通。
因为虽然那个file控件是隐藏的,但是它还是在具有runat="server"的form内的,最终提交的时候我想应该还是会被提交的。
不过如果写两个form,把这个file控件放在另一个没有runat="server"的form内的话也许能做到。不过ASP。NET要求一个页面内不允许有两个form,所以不知道能不能实现。另外一种方法就是不知道如果不把file控件放在form里能不能访问得到。
感谢思归给我提供了一种新的思路:间接利用file控件。
saucer 2003-08-24
  • 打赏
  • 举报
回复
here is a hack (didn't test, so it may not work):

<form runat=server>
<input type=file id=file1 runat=server style="display:none">
<input type=button value="select" onclick="this.form.file1.click(); v = this.form.file1.value; this.form.reset(); this.form.txt.value = v; this.form.btn.click();" />
<asp:TextBox id=txt runat=server />
<asp:Button id=btn runat=server text=submit OnClick="TestSubmit" />
</form>

<script language="C#" runat="server">
void TestSubmit(Object o, EventArgs e)
{
Response.Write("****" + txt.Text);
}
</script>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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