我要写一个功能,就是让用户在网页上通过打开文件的对话框选择完文件后只将文件名和路径保存到数据库中,而不需要将文件上传到服务器上。我本打算用Input File控件实现,可是当选择完文件以后哪怕点击一个Clicked事件中没有一行代码的按钮,Input File控件也会把文件往服务器上传。这些文件很多都有好几百兆,这么传的话我们公司网络会摊掉了。有没有什么办法可以让我取到用户选择的文件路径而不用把文件上传?

解决方案 »

  1.   

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

  2.   

    在服务器端也可以,
    string xx=fileInput.value;
    前提是这个控件是runat=server的
      

  3.   

    只是取
    string xx=fileInput.value;
    不要做上传的处理就可以了
      

  4.   

    .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> 
      

  5.   

    无语……恢复中……<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外
      

  6.   

    不用设置from的mutil-...那个属性然后直接取 file1.value 就可以了阿
      

  7.   

    可以告诉大家一点,我也讲行很清楚了,如果用fileInput控件的话,即使不做Save处理,也会做文件上传操作的。不信大家可以试一下。To goody9807:
    你的方法是不错,可惜我要选的是客户端的目录和文件。To realljx和 BubbleInDiamond:
    看来只能用纯Javascript方法了。这个办法还是不错的。