作为一名初级开发人员,我需要找到一个使用ftp下载文件的解决方案。以下是我的代码:
虽然它可以工作,但有时候我无法打开下载的文件。
虽然它可以工作,但有时候我无法打开下载的文件。
public static bool DownloadDocument(string ftpPath, string downloadPath) {
bool retVal = false;
try {
Uri serverUri = new Uri(ftpPath);
if (serverUri.Scheme != Uri.UriSchemeFtp) {
return false;
}
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(ftpPath);
reqFTP.Credentials = new NetworkCredential(Tools.FtpUserName, Tools.FtpPassword);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Proxy = null;
reqFTP.UsePassive = false;
using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse()) {
using (Stream responseStream = response.GetResponseStream()) {
using (FileStream writeStream = new FileStream(downloadPath, FileMode.Create)) {
int Length = 1024 * 1024 * 30;
Byte[] buffer = new Byte[Length];
responseStream.Read(buffer, 0, Length);
}
}
}
retVal = true;
}
catch (Exception ex) {
//Error logging to add
}
return retVal;
}
有什么想法,请提出!
catch (Exception ex)
块是愚蠢的。即使你对其进行了处理,捕获一般的Exception
已经够糟糕了。你应该尽量避免捕获这样的错误。 - Enigmativityint Length = 1024 * 1024 * 30;
或许这就是问题所在。使用静态缓冲区似乎不太好。可能是缓冲区太小,因此文件没有完全写入。 - M Stoerzel