ASP.NET: Get file path on client's machine (An

2019-01-29 13:41发布

I have a file upload control on .aspx page where I am extracting basic file information. The requirement is that I need to save absolute path for selected file from client's machine to a db.

I have read on this site as well as else where that by nature ASP.NET doesn't allow to read information from client's machine for security reason.

But I am wondering if there is a way around this issue using js or something to get the absolute path and then pass it to asp.net variables?

4条回答
闹够了就滚
2楼-- · 2019-01-29 14:02

You can't really do anything reasonable about this restriction.

Any fully trusted code on users' machine can do that. So your goal is to convince user to install something that will provide you with the information.

For Windows (all require instalation of some sort):

  • ActiveX controls
  • Native EXE
  • Locally installed managed EXE
  • locally installed HTA for IE only

I believe almost all platforms also have ways to to so... with similarly painful installation requirements.

查看更多
Deceive 欺骗
3楼-- · 2019-01-29 14:07

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.

查看更多
小情绪 Triste *
4楼-- · 2019-01-29 14:13

You can't get full path of the file. For security purposes, the browser will never post the full file's path.

Try to use below code in java script.

lbltext.Text = FileUpload1.PostedFile.FileName 
查看更多
一夜七次
5楼-- · 2019-01-29 14:17

You can't get client machine path. For security purposes, the browser will never post the full file's path.

查看更多
登录 后发表回答