【问题标题】:How to download file from FTP and upload it again如何从 FTP 下载文件并再次上传
【发布时间】:2010-03-15 19:52:57
【问题描述】:

我需要从 FTP 服务器下载文件并对其进行一些更改,然后使用 VB.NET 再次将其上传到同一个 FTP。

请帮忙。谢谢。

【问题讨论】:

标签: .net vb.net ftp ftpwebrequest


【解决方案1】:

【讨论】:

  • 这不是免费的 dll。文件。我需要直接访问 Microsoft 库的示例访问
  • 代码是公共领域的,您应该能够从您的 VB.NET 应用程序中访问这些类。你还需要什么?
  • 我尝试了 codeproject.com 的 FTpclient.cs 类,但是当我尝试从我的 ftp 下载文件时,它给了我错误文件不可用或无法访问,我认为它无法访问错误,怎么能我从 ftp 访问下载文件。谢谢
【解决方案2】:

如果您只想直接重新上传文件,只需将下载流通过管道传输到上传流:

Dim downloadRequest As FtpWebRequest =
    WebRequest.Create("ftp://downloadftp.example.com/source/path/file.txt")
downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile
downloadRequest.Credentials = New NetworkCredential("username1", "password1")

Dim uploadRequest As FtpWebRequest =
    WebRequest.Create("ftp://uploadftp.example.com/target/path/file.txt")
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile
uploadRequest.Credentials = New NetworkCredential("username2", "password2")

Using downloadResponse As FtpWebResponse = downloadRequest.GetResponse(),
      sourceStream As Stream = downloadResponse.GetResponseStream(),
      targetStream As Stream = uploadRequest.GetRequestStream()
    sourceStream.CopyTo(targetStream)
End Using

如果您需要以某种方式处理内容,或者如果您需要监控进度,或两者兼而有之,您必须逐块(或者如果是文本文件,则可能逐行处理) ):

Dim downloadRequest As FtpWebRequest =
    WebRequest.Create("ftp://downloadftp.example.com/source/path/file.txt")
downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile
downloadRequest.Credentials = New NetworkCredential("username1", "password1")

Dim uploadRequest As FtpWebRequest =
    WebRequest.Create("ftp://uploadftp.example.com/target/path/file.txt")
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile
uploadRequest.Credentials = New NetworkCredential("username2", "password2")

Using downloadResponse As FtpWebResponse = downloadRequest.GetResponse(),
      sourceStream As Stream = downloadResponse.GetResponseStream(),
      targetStream As Stream = uploadRequest.GetRequestStream()
    Dim buffer As Byte() = New Byte(10240 - 1) {}
    Dim read As Integer
    Do
        read = sourceStream.Read(buffer, 0, buffer.Length)
        If read > 0 Then
            ' process "buffer" here
            targetStream.Write(buffer, 0, read)
        End If
    Loop While read > 0
End Using

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2012-10-18
    • 2017-07-29
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多