Dha*_*raj 41 asp.net file-upload
我正在使用FileUpload控件的Web应用程序.我在我试图上传的完整文件路径'C:\ Mailid.xls'中有一个xls文件.
当我使用命令
FileUpload1.PostedFile.FileName
Run Code Online (Sandbox Code Playgroud)
我无法从我的系统中获取完整的文件路径.但是,当我在另一个系统中使用上述命令时,它工作正常.
我也尝试了以下命令但没有成功:
System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName);
Path.GetFileName(FileUpload1.PostedFile.FileName);
System.IO.Path.GetDirectoryName(FileUpload1.PostedFile.FileName).ToString();
Convert.ToString(System.IO.Directory.GetParent(FileUpload1.PostedFile.FileName));
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得完整的路径?
Con*_*dev 29
这是目前真正的,"当你上传文件,浏览器将只发送源文件名,而不是完整路径" -它非常有意义,服务器有没有企业知道文件是否是在"C:\ WINDOWS \"或者" F:\ SOMEDIR\OTHERDIR\PERSONALINFO \".始终发送文件名,这对于帮助用户"识别"内容以及可能询问文件扩展名以帮助确定文件类型都很有用.
但是我从经验中知道Internet Explorer肯定习惯(在旧版本中)发送整个路径.很难找到权威的确认(除了这个apache fileupload控件doco)
Internet Explorer提供上载文件的完整路径,而不仅仅是基本文件名
无论如何,您不应该使用也不希望任何"现代"浏览器发送完整路径.
elo*_*0ka 23
也许你误解了这种方式FileUpload.
上传文件时,它实际上是从客户端的计算机传输到托管应用程序的服务器.如果您正在开发应用程序,大多数情况下,客户端和服务器都是同一台计算机(您的计算机).但是,一旦部署了应用程序,就可能有任意数量的客户端连接到服务器,每个客户端上载一个不同的文件.
通常不需要知道客户端计算机上文件的完整路径 - 您通常希望对文件内容执行某些操作.你的例子看起来像ASP.NET C#,所以我猜你正在使用FileUpload控件.您可以通过读取原始流(FileUpload.PostedFile.InputStream)或首先FileUpload.PostedFile.SaveAs保存文件(),然后访问保存的文件来获取上载文件的内容.保存文件是您的责任,如果您希望在当前请求之后可以访问它 - 如果不这样做,ASP.NET会删除它.
还有一件事 - 不要忘记将enctype表单上的属性设置为"multipart/form-data".如果你不这样做,客户端的浏览器将不会发送文件,你会花很多时间想知道出了什么问题.
从IE8开始,完整路径不再发送到Internet区域中的站点.
请参阅本文末尾的"文件上载控件"部分:http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx进行讨论.
小智 8
尝试
Server.MapPath(FileUpload1.FileName);
Run Code Online (Sandbox Code Playgroud)
编辑: 此答案描述了如何获取服务器上文件的路径.它没有描述如何获取客户端上文件的路径,这就是问题所在.这个问题的答案是"你不能",因为出于安全原因,现代浏览器不会告诉你客户端上的路径.
| 归档时间: |
|
| 查看次数: |
288081 次 |
| 最近记录: |