【问题标题】:asp.net 2.0 asp:FIleUpload control saving uploaded files to a different serverasp.net 2.0 asp:FIleUpload 控件将上传的文件保存到不同的服务器
【发布时间】:2011-02-23 15:37:57
【问题描述】:

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

谢谢, 艾琳

【问题讨论】:

    标签: asp.net file-upload


    【解决方案1】:

    FileUoload 控件只能上传数据到网络服务器。如果您需要将文件保存到不同的服务器,您需要处理 POST 请求,从 Fileupload 控件读取数据并将它们保存到您的 UNC 共享。

    【讨论】:

      【解决方案2】:

      据我所知,使用 fileupload 控件,您实际上将内容上传到网络服务器,然后在请求时将其呈现给您的客户端(页面);我认为您不能将文件上传到网络服务器以外的其他服务器;这也不应该发生。如果需要,请查看以下 URL 以进行文件上传

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

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

      谢谢。

      【讨论】:

      • @Artyom 和@Rahul 我想出了如何真正做到这一点。基本上使用了我最初的问题中包含的同一行代码:("\\servername\foldername" & FileUpLoad1.FileName)。我的问题是我的 SaveAs 中缺少 PostedFile 属性。它应该看起来像这样才能使其正常工作:FileUpLoad1.PostedFile.SaveAs("\\servername\foldername" & FileUpLoad1.FileName)。一旦我将此属性添加到我的代码中,它就允许我上传文件。该文件夹已设置安全权限以允许我写入该文件夹。
      【解决方案3】:

      这取决于您的网络服务器设置和授予应用程序的权限。如果是 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")
      

      【讨论】:

        猜你喜欢
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多