1

HTTPS を使用して FTP でファイルをアップロードおよびダウンロードする必要があります。私の考えが正しければ、ftp は HTTPS プロトコルを使用しているため、HTTPWebRequest クラスを使用する必要があります。

今、ファイルをダウンロードしようとしていますが、取得しているすべての応答ストリームは、「ログインしている仮想ユーザー 'XXX'」だけです。

正しいメソッド タイプを設定していないか、何か他の問題が発生している可能性があります。

 WebRequest ftp1 = HttpWebRequest.Create(u1);
            ftp1.PreAuthenticate = true;
            ftp1.Credentials = netCred;

            ftp1.Method = WebRequestMethods.Ftp.DownloadFile;
            try
            {
                response = (HttpWebResponse)ftp1.GetResponse();            
                remoteStream = response.GetResponseStream();
                localStream = File.Create("c:/TEST1.txt");
                int bytesProcessed = 0;
                byte[] buffer = new byte[4096];
                int bytesRead;

                do
                {
                    // Read data (up to 1k) from the stream
                    bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                    // Write the data to the local file
                    localStream.Write(buffer, 0, bytesRead);

                    // Increment total bytes processed
                    bytesProcessed += bytesRead;
                } while (bytesRead > 0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
      finally
      {
        // Close the response and streams objects here 
        // to make sure they're closed even if an exception
        // is thrown at some point
        if (response != null) response.Close();
        if (remoteStream != null) remoteStream.Close();
        if (localStream != null) localStream.Close();
      }
4

1 に答える 1

0

HTTPS を使用していません。FTPS (または可能な SFTP) を使用しています。このクラスは、プロパティを にFtpWebRequest設定することにより、明示的な FTPS をサポートします。EnableSsltrue

それでもうまくいかない場合は、おそらくサードパーティのコンポーネントを使用する必要があります。この SO question に関する提案をご覧ください。

于 2012-11-08T21:22:27.367 に答える