获取没有文件的文件路径

时间:2013-07-25 11:17:36

标签: asp.net

在网页上,我需要允许用户输入文件的路径 - 该文件将存储在数据库中,以便随后显示“适用于此项目的文档列表”。

如果我在页面上放置了输入类型=“文件”,则用户可以轻松浏览文档...但是,在提交表单时,文档将上传到服务器。我不想要这份文件,我只想要这条路。

您如何提供允许用户浏览文件的功能,以便您可以记录文件的路径而无需实际上传文件本身?

我只想在网页上显示一些文件列表,如:

\ MYSERVER \ folder20 \ somefolder \ somefile.doc

\ myserver2 \ folder50 \ somefolder \ somefile.doc

我需要为用户提供一种简单的方法来首先找到这些文件 - 无需费力地打开Windows资源管理器,找到该文件,然后复制并粘贴路径。 文件上传控件使您可以访问路径 - 这是我需要的 - 但我不希望上传文件。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是你想要的。

假设您使用input type =“file”html控件选择文件,您将能够在jquery中获取完整的文件路径,并使用PageMethods(或jquery的ajax方法)将其传递给您的asp.net代码)。为此,您需要在aspx.cs类中创建一个web方法。

您还可以使用以下任意代码行在javascript中获取计算机名称

Request.ServerVariables["REMOTE_ADDR"]
Request.ServerVariables["REMOTE_HOST"]
Request.ServerVariables["REMOTE_USER"]

我无法测试这些,因为您必须为IIS启用反向DNS查找。你需要在网上搜索这个。

因此,您需要执行以下步骤

  1. 您的文件上传控件应如下所示

    <input type="file" id="fileSel" />
    
  2. 在你的html中输入一个scriptmanager标签(如果你没有),并将EnablePageMethods设置为true为

     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
    
  3. 你的javascript应该是这样的。

    //in javascript
    
    $("document").ready(function () {
        $("#fileSel").change(function () {
            var val = $get("fileSel").value; // This will give you complete file path i.e. C:\...
            alert(val);
            PageMethods.SendForm(val, OnSucceeded, OnFailed);//Call to webmethod on server side
    
            //you can also use ajax method but I was not able to make this work
    
            //                $.ajax({
            //                    type: "POST",
            //                    //Page Name (in which the method should be called) and method name
            //                    url: "Default.aspx/SendForm",
            //                    // If you want to pass parameter or data to server side function you can try line
            //                    data: "{'fileName':'" + val + "'}",
            //                    //else If you don't want to pass any value to server side function leave the data to blank line below
            //                    //                    data: "{}",
            //                    contentType: "application/json; charset=utf-8",
            //                    dataType: "json",
            //                    success: function (msg) {
            //                        //Got the response from server and render to the client
            //                        alert(msg.d);
            //                    }
            //                });
        });
    });
    
    function OnSucceeded() {
        alert("success");
    }
    
    function OnFailed(error) {
        // Alert user of the error.
        alert("failure");
    }
    
  4. webmethod将作为

    出现在default.aspx.cs类中
    public partial class _Default : System.Web.UI.Page
    {
    
        [System.Web.Services.WebMethod]
        public static void SendForm(string fileName)
        {
            //Do your stuff here
        }
    }
    
  5. 希望您能够使用上述步骤解决问题。

    此致

    萨马