html控件File Filed问题

tq_qiang 2009-01-09 09:56:50
如何用vs2003中自带的html控件File Filed ,在浏览中选完地址后是绝对路径。我不想显示绝对路径,只要上传的文件名称。并且从数据库中读取文件名称的时候能够在File Filed控件中显示出来。怎么做啊?最好有代码,谢拉(不要问我为什么不用vs2005,公司要求)

/**/
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;

/**/
/// '状态信息
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
///'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
///'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("SoftwarePics/") + fileName);
sb.Append(fileName);//这里只拼文件名
}
}
}
catch (System.Exception ex)
{
return false;
}
...全文
216 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HDNGO 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 huangshihu1 的回复:]
读取文件名称的时候能够在File Filed控件中显示 是不可以做到的
[/Quote]

up
lovehongyun 2009-01-09
  • 打赏
  • 举报
回复
在浏览中选完地址后是绝对路径。我不想显示绝对路径,只要上传的文件名称。并且从数据库中读取文件名称的时候能够在File Filed控件中显示出来。
===========================
脚本是不能修改<input type="file"> 这个东西的value的,也就是说你不能通过脚本去修改里边的路径,只能通过用户选择
如果脚本可以修改里边的路径.那就没有什么安全性可言了


我想不出你为什么有这种需求,如果你要上传本地的文件,那里选的就是一个绝对路径(也可以是unc路径),只有这样服务器端才可以得到上传的文件流.

至于你说"从数据库中读取文件名称的时候能在file中显示" 这个你可以变通一下,把读出来的信息显示在一个textbox中.想显示在File中是不可能的.
因为你不能对他进行修改
浮生若梦丶 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 huangshihu1 的回复:]
读取文件名称的时候能够在File Filed控件中显示 是不可以做到的
[/Quote]
是的,用一个textbox框来另外读取显示
Robin 2009-01-09
  • 打赏
  • 举报
回复
读取文件名称的时候能够在File Filed控件中显示 是不可以做到的
anncesky 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tq_qiang 的回复:]
HtmlInputFile控件怎么读取出上传完之后的路径啊。
利用SqlDataReader读取信息出错。如下:

异常详细信息: System.NotSupportedException: HtmlInputFile 的值属性是不可设置的。
行 91:this.InputPictureFile.Value=dr.GetValue(14)+"";
[/Quote]

代码稍微全一点
chinaicm 2009-01-09
  • 打赏
  • 举报
回复
this.InputPictureFile.Value
上传控件的值不能改。
LZ换个思路吧。
tq_qiang 2009-01-09
  • 打赏
  • 举报
回复
HtmlInputFile控件怎么读取出上传完之后的路径啊。
利用SqlDataReader读取信息出错。如下:

异常详细信息: System.NotSupportedException: HtmlInputFile 的值属性是不可设置的。
行 91:this.InputPictureFile.Value=dr.GetValue(14)+"";
tq_qiang 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 anncesky 的回复:]
哪有什么File Filed控件啊,我找了半天没找到

是HtmlInputFile控件吧?


在浏览中选完地址后是绝对路径。我不想显示绝对路径,只要上传的文件名称
--------------
那你就只能对这个控件进行重写,简单一点的,就是用一个textbox覆盖这个控件

然后选择完之后在这个textbox中只显示名字
[/Quote]
是HtmlInputFile控件,但是vs2003中起的名字就是File Filed ,我也没办法
anncesky 2009-01-09
  • 打赏
  • 举报
回复
哪有什么File Filed控件啊,我找了半天没找到

是HtmlInputFile控件吧?


在浏览中选完地址后是绝对路径。我不想显示绝对路径,只要上传的文件名称
--------------
那你就只能对这个控件进行重写,简单一点的,就是用一个textbox覆盖这个控件

然后选择完之后在这个textbox中只显示名字
tq_qiang 2009-01-09
  • 打赏
  • 举报
回复
以上代码是我用的多文件上传的代码
lovehongyun 2009-01-09
  • 打赏
  • 举报
回复
11楼代码你去掉onchange="textChange()" 那个没用.

然后自己处理btnBrowse的onclick事件(js处理一下),在取File1.value时,把路径拆分成你想要的显示在fileLocation的text中即可
lovehongyun 2009-01-09
  • 打赏
  • 举报
回复
给你个解决方案吧:


<input id="File1" type="file" style="display:none" />

<input type="text" name="fileLocation" id="fileLocation" onchange="textChange()" />
<input id="btnBrowse" type="button" value="Browse" onclick="File1.click();fileLocation.value=File1.value"/>

把File隐藏起来(style="display:none"),然后自己放一个按钮和一个文本框做个伪装,File的value是不能修改的,但是可以读出来.
你把File1的value读出来,然后处理一下,把你想要的路径显示在文本框中.

但实际你上传的还是那个绝对路径所对应的文件

62,268

社区成员

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

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

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

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