1

我正在使用名为theFile(ASP.NET) 的简单 FileUpload 控件上传文件。我正在尝试获取文件的绝对路径,但是完全相同,只是文件名,没有路径thefile.PostedFile.FileNamethefile.FileName我不能使用 Server.MapPath,因为我将把这个文件保存在不同的服务器上(通过 web 服务通过字节数组传输)。

它在这一行中断:

Dim fStream As New FileStream(thefile.FileName, FileMode.Open, FileAccess.Read)

因为它正在获取文件名并将其映射到我的 VS 的相对路径!我需要绝对路径...

4

2 回答 2

6

通过 HTTP 上传的文件永远不会包含远程(客户端)机器上的完整路径——它可能会泄露有关其目录结构的信息,因此被认为存在安全风险。另外,它有什么用?如果有人通过 Internet 向您上传文件,您为什么要尝试在本地(asp.net 服务器)机器上打开文件流到他们机器上存在的路径?

作为请求的一部分,上传的文件实际上以字节流的形式通过。您需要访问控件的FileBytes属性来获取文件,或者调用 SaveAs() 方法将其保存到服务器。在您的情况下,您可能只是获取字节并将它们发送到您需要进行的网络服务调用。

于 2009-08-19T05:44:19.857 回答
1

(通过网络服务通过字节数组传输)。

既然您当前需要文件字节数组,为什么不通过 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

于 2009-08-19T05:40:34.293 回答