上传多个FTP文件

Mar*_*kus 6 .net ftp ftpwebrequest

要求,每晚上传1500 jpg图像,下面的代码打开并多次关闭连接,我想知道是否有更好的方法.

...这是一个代码片段,所以这里有变量在其他地方定义

Dim picClsRequest = DirectCast(System.Net.WebRequest.Create(ftpImagePath), System.Net.FtpWebRequest)
Dim picClsStream As System.IO.Stream

Dim picCount As Integer = 0
For i = 1 To picPath.Count - 1
    picCount = picCount + 1
    log("Sending picture (" & picCount & " of " & picPath.Count & "):" & picDir & "/" & picPath(i))
    picClsRequest = DirectCast(System.Net.WebRequest.Create(ftpImagePath & "/" & picPath(i)), System.Net.FtpWebRequest)
    picClsRequest.Credentials = New System.Net.NetworkCredential(ftpUsername, ftpPassword)
    picClsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
    picClsRequest.UseBinary = True
    picClsStream = picClsRequest.GetRequestStream()

    bFile = System.IO.File.ReadAllBytes(picDir & "/" & picPath(i))
    picClsStream.Write(bFile, 0, bFile.Length)
    picClsStream.Close()

Next
Run Code Online (Sandbox Code Playgroud)

一些评论:

是的,我知道picCount是多余的......那是深夜.

ftpImagePath,picDir,ftpUsername,ftpPassword都是变量

是的,这是未加密的

这段代码工作正常,我正在寻求优化

相关问题:FTP使用.NET上传多个文件而不断开连接

Jas*_*own 5

如果要一次发送多个文件(如果顺序不重要),您可以查看异步发送文件.看看各种Begin*和End*方法,如FtpWebRequest.BeginGetResponseFtpWebRequest.EndGetResponse等.

此外,您可以查看FtpWebRequest.KeepAlive属性,该属性用于保持连接打开/缓存以供重用.

嗯,你也可以尝试创建一个巨大的tar文件,并通过一个连接在一个流中发送单个文件;)