2013-07-25 8 views
0

На веб-странице мне нужно разрешить пользователям вводить путь к файлу, который будет храниться в базе данных, чтобы впоследствии отобразить «список документов, которые применяются к этому проекту», ,Получить путь к файлу без файла

Если я помещаю на страницу тип ввода = «файл», это облегчает пользователю просмотр документа ... но, когда форма будет отправлена, документ будет загружен на сервер. Я не хочу документа, я просто хочу путь.

Как вы предоставляете функции, позволяющие пользователю просматривать файл, чтобы вы могли записать путь к файлу без фактической загрузки самого файла?

Я просто хочу закончить показ, на веб-странице, список файлов, как:

\ MyServer \ folder20 \ SomeFolder \ somefile.doc

\ myserver2 \ folder50 \ SomeFolder \ некий-файл. doc

Мне нужно предоставить пользователям простой способ найти эти файлы в первую очередь - без необходимости кропотливо открывать проводник Windows, находить файл и копировать и вставлять путь. Управление загрузкой файлов дает вам доступ к пути, который мне нужен, но я не хочу, чтобы файл был загружен.

+2

Нисколько, потому что вы не можете получить полный путь от файла на клиенте из-за ограничений безопасности. –

+1

переверните, что будет тогда использовать путь, если он обращается на другой машине –

+0

@ Md.ParvezAlam: Я предполагаю, что OP хочет записывать пути, где файл хранится у каждого клиента. Поэтому, если кто-то aks «у кого есть этот файл и где он», он может это сказать. Но это не сработает, так как сервер не должен интересоваться структурой каталогов клиента. –

ответ

0

Я не очень уверен, что это то, что вы хотите.

Предполагая, что вы выбираете файл с помощью элемента управления input type = "file" html, вы сможете получить полный путь к файлу в jquery и передать его в ваш код asp.net, используя метод PageMethods (или ajax JQuery). Для этого вам нужно создать веб-метод внутри вашего класса aspx.cs.

Вы также можете получить имя компьютера в JavaScript, используя любой из следующих строк кода

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

я не был в состоянии проверить это, как вы должны включить обратный поиск DNS для IIS. Для этого вам нужно искать в сети.

Таким образом, следующие шаги, которые вы должны были бы сделать

  1. Ваш контроль загрузки файла должен выглядеть как этот

    <input type="file" id="fileSel" /> 
    
  2. положить ScriptManager тег, если вы не имеете один, в ваш HTML и установить EnablePageMethods истина, как

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

Надеется, что вы будете в состоянии решить вашу проблему, используя описанные выше шаги.

С уважением,

Samar

+0

Спасибо за это, я дам это. Я всегда думал, что вы не можете получить доступ к типу input type = file. Но, я думаю, вы можете получить доступ к значению, но не можете его изменить? –

+0

Я не думаю, что наоборот. Я просто искал некоторые сайты и вопросы о stackoverflow, и все они говорят, что это невозможно, но сейчас, вы никогда не знаете. Я не пробовал это с моей стороны. Вы можете исследовать и дать мне знать, если вы найдете что-нибудь в этом отношении. – samar

Смежные вопросы