在网页上,我需要允许用户输入文件的路径 - 该文件将存储在数据库中,以便随后显示“适用于此项目的文档列表”。
如果我在页面上放置了输入类型=“文件”,则用户可以轻松浏览文档...但是,在提交表单时,文档将上传到服务器。我不想要这份文件,我只想要这条路。
您如何提供允许用户浏览文件的功能,以便您可以记录文件的路径而无需实际上传文件本身?
我只想在网页上显示一些文件列表,如:
\ MYSERVER \ folder20 \ somefolder \ somefile.doc
\ myserver2 \ folder50 \ somefolder \ somefile.doc
我需要为用户提供一种简单的方法来首先找到这些文件 - 无需费力地打开Windows资源管理器,找到该文件,然后复制并粘贴路径。 文件上传控件使您可以访问路径 - 这是我需要的 - 但我不希望上传文件。
答案 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查找。你需要在网上搜索这个。
因此,您需要执行以下步骤
您的文件上传控件应如下所示
<input type="file" id="fileSel" />
在你的html中输入一个scriptmanager标签(如果你没有),并将EnablePageMethods设置为true为
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
你的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");
}
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
}
}
希望您能够使用上述步骤解决问题。
此致
萨马