要求,每天晚上上传1500 jpg的图像,下面的代码打开和关闭连接多次,我想知道是否有更好的方法。
...this是一个代码片段,所以这里有一些在别处定义的变量
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一些评论:
是的,我知道redundant...It在深夜。
ftpImagePath、picDir、ftpUsername、ftpPassword都是变量
是的,这是未加密的
这段代码运行得很好,我正在寻找优化
相关问题:FTP Upload multiple files without disconnect using .NET
发布于 2010-03-05 13:44:42
如果您想一次发送多个文件(如果顺序不重要),可以考虑异步发送文件。看看各种Begin*和End*方法,如FtpWebRequest.BeginGetResponse和FtpWebRequest.EndGetResponse等。
此外,您还可以查看FtpWebRequest.KeepAlive属性,该属性用于保持连接打开/缓存以供重用。
嗯,你也可以尝试创建一个巨大的tar文件,然后用一个连接在一个流中发送这个文件。)
发布于 2010-03-05 14:17:13
是否可以将文件压缩成不同的包,例如,创建15个压缩文件,每个压缩文件有100个图像,然后上传压缩文件,这样会更快、更高效。
有一些免费的库可以动态创建压缩包(例如sharpZipLib)
发布于 2010-03-05 23:48:26
使用多线程-一次打开3-4个FTP连接,并并行上传文件。
https://stackoverflow.com/questions/2384513
复制相似问题