我有這樣的方法來傳輸使用FTP服務器的文件:C#中的FTP返回損壞的文件,爲什麼?
private void TransferNeededFiles(IEnumerable<string> filenames)
{
foreach (var filename in filenames)
{
var request = WebRequest.Create(new Uri(@"ftp://{0}/{1}".Fill(Config.ServerUri, filename))) as FtpWebRequest;
if (request != null)
{
request.Credentials = new NetworkCredential(Config.Username, Config.Password);
request.Method = WebRequestMethods.Ftp.DownloadFile;
using (var streamReader = new StreamReader(request.GetResponse().GetResponseStream()))
{
var fileStream = new FileStream(@"{0}/{1}".Fill(Config.DestinationFolderPath, filename), FileMode.Create);
var writer = new StreamWriter(fileStream);
writer.Write(streamReader.ReadToEnd());
writer.Flush();
writer.Close();
fileStream.Close();
}
}
}
}
加上.gz文件,包含在文件名列表,總是損壞。當我嘗試使用Windows資源管理器從FTP進行復制時,該文件未被損壞。你知道發生了什麼嗎?
你確定你使用的是二進制傳輸而不是ascii? – 2009-07-20 21:27:32
我使用上面的這段代碼。我沒有指定ascii或binary,這可能是問題嗎? – 2009-07-20 21:29:57
查看UseBinary http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx。 – 2009-07-20 21:36:26