-1

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

我已经阅读了这个站点以及其他站点,出于安全原因,ASP.NET 本质上不允许从客户端计算机读取信息。

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

4

4 回答 4

3

你不能对这个限制做任何合理的事情。

用户机器上的任何完全受信任的代码都可以做到这一点。所以你的目标是说服用户安装一些可以为你提供信息的东西。

对于 Windows(都需要某种形式的安装):

  • ActiveX 控件
  • 本机EXE
  • 本地安装的托管 EXE
  • 本地安装的 HTA 仅适用于 IE

我相信几乎所有平台也有办法这样做......同样痛苦的安装要求。

于 2013-01-04T08:36:16.650 回答
2

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

于 2013-01-04T08:40:17.250 回答
1

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

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

lbltext.Text = FileUpload1.PostedFile.FileName 
于 2013-01-04T09:16:52.193 回答
0

Browser send file without full file path, so to retrieve file path you do it on client side via javascript function:

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

If you don't want to send a file path via query string, you can create hidden form field, so file path will be sent via post.

于 2013-01-04T09:20:56.663 回答