【发布时间】:2010-03-15 19:52:57
【问题描述】:
我需要从 FTP 服务器下载文件并对其进行一些更改,然后使用 VB.NET 再次将其上传到同一个 FTP。
请帮忙。谢谢。
【问题讨论】:
-
我正在寻找类似的解决方案,并找到了 THE AMAZING 的好代码。检查以下链接:stackoverflow.com/questions/5938893/…
标签: .net vb.net ftp ftpwebrequest
我需要从 FTP 服务器下载文件并对其进行一些更改,然后使用 VB.NET 再次将其上传到同一个 FTP。
请帮忙。谢谢。
【问题讨论】:
标签: .net vb.net ftp ftpwebrequest
【讨论】:
如果您只想直接重新上传文件,只需将下载流通过管道传输到上传流:
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
另见:
【讨论】: