怎样在用Input File控件选择完文件后只取文件路径而不上传文件?

Witwind 2004-09-24 01:18:01
我要写一个功能,就是让用户在网页上通过打开文件的对话框选择完文件后只将文件名和路径保存到数据库中,而不需要将文件上传到服务器上。我本打算用Input File控件实现,可是当选择完文件以后哪怕点击一个Clicked事件中没有一行代码的按钮,Input File控件也会把文件往服务器上传。这些文件很多都有好几百兆,这么传的话我们公司网络会摊掉了。有没有什么办法可以让我取到用户选择的文件路径而不用把文件上传?
...全文
1160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Witwind 2004-09-27
  • 打赏
  • 举报
回复
可以告诉大家一点,我也讲行很清楚了,如果用fileInput控件的话,即使不做Save处理,也会做文件上传操作的。不信大家可以试一下。

To goody9807:
你的方法是不错,可惜我要选的是客户端的目录和文件。

To realljx和 BubbleInDiamond:
看来只能用纯Javascript方法了。这个办法还是不错的。
nnh 2004-09-24
  • 打赏
  • 举报
回复
你不save就可以了.
火电 2004-09-24
  • 打赏
  • 举报
回复
不用设置from的mutil-...那个属性

然后直接取 file1.value 就可以了阿
BubbleInDiamond 2004-09-24
  • 打赏
  • 举报
回复
无语……

恢复中……

<input type="file" name="filename" id="filename" onselect="getUrl()">
<input type="hidden" name="FileUrl" id="FileUrl" runat="server">

javascript:
function getUrl()
{
document.formname.FileUrl.value = document.formname.filename.value//如果指定了form名
//else document.getElementById("FileUrl").value = document.getElementById("filename").value (IE5+NN6+)
}
这样file没有runat=server应该不会上传了吧……如果还上传,就干脆把他扔到runat=server的form外
goody9807 2004-09-24
  • 打赏
  • 举报
回复
你也可以通过取最后一个\之前的字符串就是路径
goody9807 2004-09-24
  • 打赏
  • 举报
回复
.NET Framework提供两个访问目录信息的类和两个访问文件信息的类,钥访问目录,可以使用Directory类,也可以使用DirectoryInfo类,对应于文件,也有File类和FileInfo类。这两个类之间的区别在于返回的信息和使用的方法不同。Directory和File类属于静态类,在使用时你不必创建实例,例如:要删除文件,可以File.Delete(filePath),要检测文件夹是否存在可以Directory.Exists(directoryPath)。而带Info的类在使用时必须先进行实例化,并在构造函数里指名文件名字或者目录名字,因此,删除文件可以用Dim myFile as File = New File(filePath),myFile.Delete()。

这两个类都提供了得到一个文件夹下的所有文件或者某种扩展名的文件的方法,即GetFiles()。

' --- Directory 例子 ----
Dim files() as String = Directory.GetFiles(directoryPath[, optionalWildCard])

' --- DirectoryInfo 例子 ----
Dim myDir as DirectoryInfo = New DirectoryInfo(directoryPath)
Dim fileInfos() as FileInfo = myDir.GetFiles([optionalWildCard])

值得注意的是,两者返回的类型是不同的,一个是String类型的数组,另外一个是FileInfo类型的数组。下面就是绑定的方法:

VB.NET

<%@ Import Namespace="System.IO" %>
<script language="VB" runat="server">
Sub Page_Load(sender as Object, e as EventArgs)
Dim dirInfo as New DirectoryInfo(Server.MapPath(""))
articleList.DataSource = dirInfo.GetFiles("*.aspx")
articleList.DataBind()
End Sub
</script>

<asp:DataGrid runat="server" id="articleList" Font-Name="Verdana"
AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="Navy" HeaderStyle-ForeColor="White"
HeaderStyle-Font-Size="15pt" HeaderStyle-Font-Bold="True">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name"
HeaderText="文件名" />
<asp:BoundColumn DataField="LastWriteTime" HeaderText="最后修改时间"
ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
<asp:BoundColumn DataField="Length" HeaderText="文件大小"
ItemStyle-HorizontalAlign="Right"
DataFormatString="{0:#,### 字节}" />
</Columns>
</asp:DataGrid>

happyjun2000 2004-09-24
  • 打赏
  • 举报
回复
只是取
string xx=fileInput.value;
不要做上传的处理就可以了
ark_matrix 2004-09-24
  • 打赏
  • 举报
回复
在服务器端也可以,
string xx=fileInput.value;
前提是这个控件是runat=server的
realljx 2004-09-24
  • 打赏
  • 举报
回复
不就可以了吗?

用普通的Form,你用javascript 取出 form1.fileInput.value (fileInput是你的文件域的名字)来 然后作处理。

62,025

社区成员

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

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

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

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