asp.net 2.0 asp:FIleUpload控件将上载的文件保存到其他服务器

asp.net 2.0 asp:FIleUpload控件将上载的文件保存到其他服务器,asp.net,file-upload,Asp.net,File Upload,我正在尝试使用asp:FileUpload控件允许用户将文件(.doc、.gif、.xls、.jpg)上载到DMZ之外的服务器,而不是Web服务器。我们希望在将这些文件保存到另一个允许外部用户访问的目录之前,能够查看这些文件的病毒、结构等。据我所知,这个控件允许将文件上传到web服务器。此控件是否可用于将文件上载到web服务器以外的服务器?如果可以,我应该在哪里查找此类功能,或者如何强制它转到https:\servername\foldername(其中服务器名称不是web服务器)?我必须先读取

我正在尝试使用asp:FileUpload控件允许用户将文件(.doc、.gif、.xls、.jpg)上载到DMZ之外的服务器,而不是Web服务器。我们希望在将这些文件保存到另一个允许外部用户访问的目录之前,能够查看这些文件的病毒、结构等。据我所知,这个控件允许将文件上传到web服务器。此控件是否可用于将文件上载到web服务器以外的服务器?如果可以,我应该在哪里查找此类功能,或者如何强制它转到https:\servername\foldername(其中服务器名称不是web服务器)?我必须先读取文件,然后将其写入另一台服务器吗

谢谢,
Erin

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

据我所知,使用Fileupload控件,您实际将内容上载到Web服务器,inturn将在请求时呈现给您的客户端(页面);我不认为你可以上传文件到不同的服务器以外的Web服务器;这也不应该发生。如果需要,请查看下面的文件上载URL


谢谢。

这取决于您的web服务器设置和授予应用程序的权限。如果它是DMZ,那么我会假设对应用程序授予了非常小的权限。在这种情况下,应用程序将无法访问webserver以外的任何资源,除非向运行应用程序的帐户授予访问网络资源的显式权限(不建议这样做)。但是,如果您试图保存文件的网络服务器启用了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中缺少PostedFile属性。要使其正常工作,它应该是这样的:FileUpLoad1.PostedFile.SaveAs(“\\servername\foldername”&FileUpLoad1.FileName)。一旦我把这个属性添加到我的代码中,它就允许我上传文件。该文件夹已设置安全权限,允许我写入该文件夹。