我使用名为theFile
(ASP.NET)的简单FileUpload控件上传文件。我正在尝试获取文件的绝对路径,但thefile.PostedFile.FileName
和thefile.FileName
完全相同,只是文件名,没有路径!我不能使用Server.MapPath,因为我将把这个文件保存在不同的服务器上(通过web服务通过字节数组传输)。
它突破了这一行:
Dim fStream As New FileStream(thefile.FileName, FileMode.Open, FileAccess.Read)
因为它采用文件名并将其映射到我的VS的相对路径!我需要绝对的道路......
答案 0 :(得分:5)
通过HTTP上传的文件永远不会包含远程(客户端)计算机上的完整路径 - 它可能会泄露有关其目录结构的信息,因此被视为安全风险。另外,它有什么用?如果有人通过互联网上传你的文件,为什么你要尝试在你的本地(asp.net服务器)机器上打开一个文件流到他们机器上存在的路径?
上传的文件实际上是作为请求的一部分的字节流。您需要访问控件的FileBytes属性才能获取文件,或者调用SaveAs()方法将其保存到服务器。在您的情况下,您可能只需获取字节并将其发送到您需要进行的Web服务调用。
答案 1 :(得分:1)
(通过web服务通过字节数组传输)。
由于您当前需要文件字节数组,为什么不通过File.FileBytes属性访问文件的字节数组?
以下是对FileUpload Web控件的FileBytes属性的引用:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filebytes.aspx
如果要直接访问Stream对象,可以使用FileContent属性。以下是对FileUpload Web控件的FileContent属性的引用:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filecontent.aspx