2011-02-23 49 views
2

我想使用asp:FileUpload控件来允许用户上传文件(.doc,.gif,.xls,.jpg)到一个服务器位于我们的DMZ之外,而不是Web服务器。我们希望能够在将这些文件保存到允许访问外部用户的另一个目录中之前查看这些文件中的病毒,结构等。从我读过的关于这个控件的一点是,它将允许文件上传到Web服务器。可以使用此控件将文件上传到除Web服务器以外的服务器吗?如果可以,我应该在哪里寻找这种类型的功能,或者如何强制它转到https:\ servername \文件夹名称(其中服务器名称不是Web服务器)?我需要读取文件然后将其写入其他服务器吗?asp.net 2.0 asp:FIleUpload控制保存上传文件到不同的服务器

感谢, 艾琳

回答

1

FileUoload控制只能上传数据到Web服务器。如果您需要将文件保存到其他服务器,则需要处理POST请求,从Fileupload控件读取数据并将其保存到UNC共享中。

0

据我所知,使用fileupload控件,你实际上传内容到web服务器,当请求时inturn会被呈现给你的客户端(页面);我不认为你可以上传文件到网络服务器以外的其他服务器;这不应该发生。如果你想

http://msdn.microsoft.com/en-us/library/aa479405.aspx

http://www.asp.net/data-access/tutorials/uploading-files-cs

谢谢看看下面的网址文件上传。

+0

@Artyom和@Rahul我想出如何真正做到这一点。基本上使用包含在我最初的问题中的同一行代码:(“\\ servername \ foldername”&FileUpLoad1.FileName)。我的问题是我错过了SaveAs中的PostsFile属性。它应该看起来像这样让它正常工作:FileUpLoad1.PostedFile.SaveAs(“\\ servername \ foldername”&FileUpLoad1.FileName)。一旦我将这个属性添加到我的代码,它允许我上传文件。该文件夹的安全权限设置为允许我写入文件夹。 – 2011-02-24 19:03:25

0

这取决于您的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") 
相关问题