2017-12-27 23 views
-3

SFTPファイル(.csv)をC#とasp.netを使用してダウンロードしようとしましたが、すべての例でリモートファイルディレクトリが必要です。ASP.NETブラウザを使用してSFTPファイルをダウンロードする

この場合、ブラウザ(クライアント)はファイルを直接ディレクトリに置くことができないため、ブラウザにファイルをダウンロードする必要があります。

誰もこれを前にしましたか?

私はSSH.NETを使用しようとしていましたが、その方法を見つけられませんでした。

+0

"SFTPファイル"。 SFTPはSecure FTPであり、プロトコルであり、ファイルの種類ではありません。何を求めているのか、それがASP.NETにどのように関係しているのかは完全には分かりません。 –

+0

ブラウザがSFTP(おそらく頼りにいられないもの)で動作する能力を持っていない限り、ブラウザはこれに関与しません。サーバーには適切なライブラリが必要です。ファイルをダウンロードし、他のファイルと同じようにWebサーバーからファイルをダウンロードできるようにする必要があります。 – mason

+0

あなたは、sftpサーバからファイルをストリーミングし、すぐにhttp応答ストリームにバイトを書き込むことができるハンドラを書くことを検討するかもしれません。したがって、あなたのサーバは(sftpを理解していない)ブラウザとsftpサーバ(それはhttpを理解していません) –

答えて

0

これを解決するには、SFTPを使用してファイルをサーバーに移動し、normalyファイルをダウンロードします。

string host = @"host"; 
     string username = "user"; 
     string password = "pass"; 
     string remoteDirectory = "/remote"; 

     string localDirectory = Server.MapPath(@"\pdf\"); 

     using (var sftp = new SftpClient(host, username, password)) 
     { 
      sftp.Connect(); 
      var files = sftp.ListDirectory(remoteDirectory); 

      foreach (var file in files) 
      { 
       string remoteFileName = file.Name; 
       if (remoteFileName == "APADEAATTT.csv") 
       { 

        using (Stream file1 = File.OpenWrite(localDirectory + "APADEAATTT.csv")) 
        { 
         sftp.DownloadFile(remoteDirectory + "APADEAATTT.csv", file1); 
        } 
       } 
      } 

     } 

     FileInfo fileInfo = new FileInfo(localDirectory+"APADEAATTT.csv"); 
     Response.Clear(); 
     Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name); 
     Response.AddHeader("Content-Length", fileInfo.Length.ToString()); 
     Response.ContentType = "text/csv"; 
     Response.Flush(); 
     Response.WriteFile(fileInfo.FullName); 
     Response.End(); 
関連する問題