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

C# 在ASP.NET中检索文件上载控件中的完整本地路径,c#,asp.net,file-upload,C#,Asp.net,File Upload,是否可以在文件上载控制中访问文件的本地路径 例如,我有一个文件C:\DummyData\Hello.txt ASP.NET项目存储在这里C:\Project\FileUploadTest,它有一个默认的.aspx页面,包含文件上载控件,比如fileUpload1 在代码隐藏中,我使用 string filename = Path.GetFullPath(fileUpload1.PostedFile.FileName); 但这给了我文件名 C:\\Program Files\\Common F

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

例如,我有一个文件C:\DummyData\Hello.txt

ASP.NET项目存储在这里C:\Project\FileUploadTest,它有一个默认的.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

我可以假设,由于安全原因,浏览器无法显示实际路径,因此显示伪造路径。。但这不能在代码隐藏中访问吗

我可以假设,由于安全原因,浏览器无法显示实际路径,因此显示伪造路径。。但这不能在代码隐藏中访问吗


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

如上所述,它不能做到这一点,但您可以尝试使用JavaScript和隐藏输入的解决方法。我还没有测试代码,但类似这样的东西可以做到:

HTML

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

显然,您希望进行验证,但为了简洁起见,我将其省略。

Dave Zych:我不想将文件带到服务器。一旦我掌握了客户端文件路径,我将使用file.move将文件移动到另一台机器(比如机器B),而不将其带到服务器。
$('#<%=fileUpload1.ClientID %>').change(function() {
    $('#<%=hidLocalPath.ClientID %>').val($(this).val());
});
string localFileName = hidLocalPath.Value;