ASP.NET:在客户机上获取文件路径(任何可能的解决方案/解决方法?)

时间:2013-01-04 08:29:05

标签: c# asp.net file-upload

我在.aspx页面上有一个文件上传控件,我在那里提取基本文件信息。要求是我需要将所选文件的绝对路径从客户机的机器保存到数据库。

我已经阅读过这个网站以及其他地方,因为出于安全原因,ASP.NET不允许从客户机上读取信息。

但我想知道是否有办法解决这个问题,使用js或其他东西来获取绝对路径,然后将其传递给asp.net变量?

4 个答案:

答案 0 :(得分:3)

你无法对这种限制做任何合理的事情。

用户机器上的任何完全受信任的代码都可以做到这一点。因此,您的目标是说服用户安装能够为您提供信息的内容。

对于Windows(所有都需要某种安装):

  • ActiveX控件
  • 原生EXE
  • 本地安装的托管EXE
  • 仅限本地安装的HTA

我相信几乎所有平台都有办法实现......同样痛苦的安装要求。

答案 1 :(得分:2)

您无法获取客户端计算机路径。出于安全考虑,浏览器永远不会发布完整文件的路径。

答案 2 :(得分:1)

您无法获得该文件的完整路径。 出于安全考虑,浏览器永远不会发布完整文件的路径。

尝试在java脚本中使用以下代码。

lbltext.Text = FileUpload1.PostedFile.FileName 

答案 3 :(得分:0)

浏览器发送没有完整文件路径的文件,因此要检索文件路径,请通过javascript函数在客户端执行:

<script type="text/javascript">
function OnSubmitHandler(myForm)
{
   var fileUpload = document.getElementById('<% = FileUpload1.ClientID %>');


   myForm.action =  myForm.action + "?FilePath=" + fileUpload.value;


   return true;


}
</script>


<form id="Form1" method="post" runat="server" onsubmit="return OnSubmitHandler(this);">
...
<asp:FileUpload id="FileUpload1" ....  />


...
</form>

如果您不想通过查询字符串发送文件路径,可以创建隐藏的表单字段,因此文件路径将通过post发送。