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都是变量
是的,这是未加密的
这段代码工作正常,我正在寻求优化
如果要一次发送多个文件(如果顺序不重要),您可以查看异步发送文件.看看各种Begin*和End*方法,如FtpWebRequest.BeginGetResponse和FtpWebRequest.EndGetResponse等.
此外,您可以查看FtpWebRequest.KeepAlive属性,该属性用于保持连接打开/缓存以供重用.
嗯,你也可以尝试创建一个巨大的tar文件,并通过一个连接在一个流中发送单个文件;)