0

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

如果我在页面上输入 type="file" ,则用户可以轻松浏览到文档……但是,当提交表单时,文档将被上传到服务器。我不想要文件,我只想要路径。

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

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

\myserver\folder20\somefolder\somefile.doc

\myserver2\folder50\somefolder\somefile.doc

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

4

1 回答 1

0

我不太确定这是否是您想要的。

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

您还可以使用以下任何代码行在 javascript 中获取机器名称

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

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

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

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

    <input type="file" id="fileSel" />
    
  2. 如果您没有脚本管理器标签,则在您的 html 中放置一个脚本管理器标签并将 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
        }
    }
    

希望您能够使用上述步骤解决您的问题。

问候,

萨马尔

于 2013-07-25T15:04:57.000 回答