这取决于您的Web服务器设置和授予应用程序的权限。如果它是DMZ,那么我会假设给这个应用程序授予一个非常小的权限。在这种情况下,应用程序将无法访问除web服务器以外的任何资源,除非为运行应用程序的帐户授予访问网络资源的明确权限(不推荐)。但是,如果试图保存文件的nework服务器启用了ftp,那么您可以使用具有必要权限的经过身份验证的ftp帐户将文件上传控制中流传的字节写入网络服务器。
您可以使用下面的功能:
Imports System.Net
Imports System.IO
Public Function Upload(ByVal FileByte() As Byte, ByVal FileName As String, ByVal ftpUserID As String, ByVal ftpPassword As String, ByVal ftpURL As String) As Boolean
Dim retValue As Boolean = False
Try
Dim ftpFullPath As String = ftpURL + "/" + FileName
Dim ftp As FtpWebRequest = FtpWebRequest.Create(New Uri(ftpFullPath))
ftp.Credentials = New NetworkCredential(ftpUserID, ftpPassword)
ftp.KeepAlive = True
ftp.UseBinary = True
ftp.Method = WebRequestMethods.Ftp.UploadFile
Dim ftpStream As Stream = ftp.GetRequestStream()
ftpStream.Write(FileByte, 0, FileByte.Length)
ftpStream.Close()
ftpStream.Dispose()
retValue = True
Catch ex As Exception
Throw ex
End Try
Return retValue
End Function
函数调用:
Upload(FileUploadControl.FileBytes, "filename.ext" "user", "password", "ftppath")
@Artyom和@Rahul我想出如何真正做到这一点。基本上使用包含在我最初的问题中的同一行代码:(“\\ servername \ foldername”&FileUpLoad1.FileName)。我的问题是我错过了SaveAs中的PostsFile属性。它应该看起来像这样让它正常工作:FileUpLoad1.PostedFile.SaveAs(“\\ servername \ foldername”&FileUpLoad1.FileName)。一旦我将这个属性添加到我的代码,它允许我上传文件。该文件夹的安全权限设置为允许我写入文件夹。 – 2011-02-24 19:03:25