在ASP.NET中检索文件上载控件中的完整本地路径

时间:2014-03-04 22:25:44

标签: c# asp.net file-upload

是否可以在文件上传控件中访问文件的本地路径?

E.g。我有一个文件C:\ DummyData \ Hello.txt

ASP.NET项目存储在此处C:\ Project \ FileUploadTest,其中包含一个default.aspx页面,其中包含文件上传控件,例如fileUpload1。

在代码背后,我使用

string filename = Path.GetFullPath(fileUpload1.PostedFile.FileName);

但这给了我文件名

 C:\\Program Files\\Common Files\\Microsoft Shared\\DevServer\\10.0\\Hello.txt

有没有办法可以捕获C:\ DummyData \ Hello.txt?

我可以假设,由于安全原因,浏览器无法显示实际路径,因此显示伪路径..但​​是这不能在代码后面访问吗?

2 个答案:

答案 0 :(得分:0)

  

我可以假设,由于安全原因,浏览器无法显示实际路径,因此显示伪路径..但​​是这不能在代码后面访问吗?

你是对的。它也无法在代码中访问,部分原因是出于安全原因,而且可能更重要的是,为什么需要它呢?如果您可以在服务器上获取它,则无法对该路径执行任何操作。除了在开发服务器和客户端机器是两台不同的机器时。

答案 1 :(得分:0)

如上所述,它没有这样做,但您可以尝试使用JavaScript和隐藏输入的解决方法。我没有测试过代码,但这样的事情就可以了:

<强> HTML

<asp:FileUpload ID="fileUpload1" runat="server" />
<input type="hidden" id="hidLocalPath" runat="server" />

JavaScript (使用jQuery)

$('#<%=fileUpload1.ClientID %>').change(function() {
    $('#<%=hidLocalPath.ClientID %>').val($(this).val());
});

服务器端(C#)

string localFileName = hidLocalPath.Value;

显然你想做验证,但为了简洁,我把它留了下来。