我有这样的方法来传输使用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