我在提取基本文件信息的 .aspx 页面上有一个文件上传控件。要求是我需要将所选文件的绝对路径从客户端机器保存到数据库。
我已经阅读了这个站点以及其他站点,出于安全原因,ASP.NET 本质上不允许从客户端计算机读取信息。
但我想知道是否有办法解决这个问题,使用 js 或其他方法来获取绝对路径,然后将其传递给 asp.net 变量?
我在提取基本文件信息的 .aspx 页面上有一个文件上传控件。要求是我需要将所选文件的绝对路径从客户端机器保存到数据库。
我已经阅读了这个站点以及其他站点,出于安全原因,ASP.NET 本质上不允许从客户端计算机读取信息。
但我想知道是否有办法解决这个问题,使用 js 或其他方法来获取绝对路径,然后将其传递给 asp.net 变量?
你不能对这个限制做任何合理的事情。
用户机器上的任何完全受信任的代码都可以做到这一点。所以你的目标是说服用户安装一些可以为你提供信息的东西。
对于 Windows(都需要某种形式的安装):
我相信几乎所有平台也有办法这样做......同样痛苦的安装要求。
您无法获取客户端机器路径。出于安全目的,浏览器永远不会发布完整文件的路径。
您无法获取文件的完整路径。出于安全目的,浏览器永远不会发布完整文件的路径。
尝试在 java 脚本中使用以下代码。
lbltext.Text = FileUpload1.PostedFile.FileName
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.