2017-12-27 4 views
-3

Ich habe versucht, eine SFTP-Datei (.csv) mit C# und asp.net herunterladen, aber alle Beispiele benötigt mich ein Remote-Dateiverzeichnis haben.ASP.NET Laden Sie eine SFTP-Datei mit dem Browser

Für diesen Fall brauche ich den Browser, um die Datei herunterzuladen, nicht um mich in das Verzeichnis zu legen, da der Browser (Client) keinen Zugriff darauf hat, Dateien direkt in ein Verzeichnis abzulegen.

Haben Sie das schon mal gemacht?

Ich habe versucht, SSH.NET zu verwenden, aber fand keine Möglichkeit, es zu tun.

+0

"eine SFTP-Datei". SFTP ist Secure FTP, ein Protokoll, keine Art von Datei. Es ist völlig unklar, was Sie fragen oder wie es mit ASP.NET zusammenhängt. –

+0

Wenn der Browser nicht mit SFTP arbeiten kann (etwas, auf das Sie sich wahrscheinlich nicht verlassen können), ist der Browser nicht involviert. Ihr Server benötigt die entsprechenden Bibliotheken. Es müsste die Datei herunterladen und dann dem Benutzer erlauben, die Datei wie jede andere Datei von Ihrem Webserver herunterzuladen. – mason

+0

Sie könnten erwägen, einen Handler zu schreiben, der eine Datei von einem sftp-Server streamen kann und die Bytes sofort in einen HTTP-Antwortstream schreibt. Ihr Server wird so zu einem Adapter im Namen eines Browsers (der sftp nicht versteht) und eines sftp-Servers (das http nicht versteht) –

Antwort

0

Gelöst, indem Sie die Datei mit SFTP auf meinen Server verschieben und dann die Datei normal herunterladen.

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(); 
Verwandte Themen