2011-02-03 9 views
1

私はFTP経由でサーバーからファイルをダウンロードするためにこのコードを使用しています。それは(PDF、HTML、JPG ...)ほとんどすべての拡張子を持つ正常に動作しますが、何らかの理由で、すべてのzipファイルには、いくつかのerrosでダウンロードされます。Monotouch - FTP(oly zipファイル)によるダウンロード時のエラー

public static FtpStatusCode Download(string destinationFile, Uri downloadUri, string userName, string password) 
    { 
     try 
     { 

      if (downloadUri.Scheme != Uri.UriSchemeFtp) 
      { 
       throw new ArgumentException("Invalid FTP site"); 
      } 
      FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(downloadUri); 
      ftpRequest.Credentials = new NetworkCredential(userName, password); 
      ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; 

      ftpRequest.UseBinary =true; 
      ftpRequest.UsePassive = true; 

      FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
      Stream stream = null; 
      StreamReader reader = null; 
      StreamWriter writer = null; 

      try 
      { 
       stream = ftpResponse.GetResponseStream(); 

       reader = new StreamReader(stream, Encoding.UTF8); 
       writer = new StreamWriter(destinationFile, false); 
       writer.Write(reader.ReadToEnd()); 

       return ftpResponse.StatusCode; 
      } 
      finally 
      { 

       stream.Close(); 
       reader.Close(); 
       writer.Close();  
      } 

     } 

     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

誰もがその理由を知っていますか解決策を伝えることができますか?あなたは、あなたの情報を転送するためのStreamReaderを使用している有効なUTF8コードでないバイナリデータを復号化され、UCS2の行にそれを変換し、その結果を再エンコード

よろしく、
クラウディオ

+0

なぜ 'Encoding.UTF8'を設定しますか? – Gabe

+0

ダウンロードしているファイルの中には、UTF8にする必要があるものがあります。しかし、このエンコーディングがなくても、zipファイルは間違っています。 – Claudio

答えて

3

StreamReaderとStreamWriterを使用せずにコピーを実行する必要があります。

+0

StreamReader/Writerを使用せずにコピーを実行するにはどうすればよいですか? – Claudio

+0

ええ、私はStremとFileWriterだけを使って動作させました。ヒントをありがとう! – Claudio

関連する問題