2010-12-11 12 views
0

Wie Dateien auf jeden Webserver (Linux) von ASP.NET Web-Anwendung laden .., wie man Dateien hochladen

+1

Könnten Sie bitte erklären? Möchten Sie eine Datei von einem Browser auf die ASP.NET-Anwendung Ihres Servers hochladen (die auf einem Linux-Server ausgeführt wird) oder möchten Sie eine Datei von einem Server (mit Ihrer ASP.NET-Anwendung) auf einen anderen Server hochladen (wird ausgeführt)? ..etwas, unter linux)? –

+0

Ich möchte eine Datei von einem Server (mit meiner ASP.NET-Anwendung) auf einen anderen unter Linux laufenden Server hochladen. – kenom

Antwort

0

Wenn der Linux-Server in Frage einen FTP-Dienst bereitstellt, dann here's a tutorial für in .NET, dass zugreifen. Wenn FTP keine Option ist, geben Sie bitte an, welchen Service der Linux-Server für das Hochladen von Dateien anbietet (Samba, NFS usw.).

+0

haben Sie Beispiel in C# – kenom

+0

@kenom: Der Code in diesem Tutorial kann sehr leicht in C# übersetzt werden scheint keine VB-only-Konstrukte zu verwenden, die ich bemerkt habe. Wenn Sie brauchen, können Sie wahrscheinlich einen VB .NET zu C# Konverter online finden. Wenn nicht, kompilieren Sie es einfach in VB und verwenden Sie Reflector, um es in C# zu zerlegen, wenn Sie müssen. Aber ehrlich gesagt, das ist alles übertrieben. Der Code ist nicht komplex. – David

1

Nehmen Sie diese Schritte als allgemeine Richtlinie:

  • gehören ASP.NET Server-Steuerelement für den Benutzer seine SaveAs Pfad der Datei
  • haben eine UNC path zu einer Freigabe auf dem Remote-Server zu laden.

Hier ist mehr über die FileUpload ASP.NET Server Control at MSDN.

<asp:FileUpload ID="FileUpload1" runat="server" /> 

if (FileUpload1.HasFile) 
{ 
    FileUpload1.SaveAs(@"\\server2\SomeShare\" + FileUpload1.FileName); 
} 

Wenn wollten Sie die Dateien zuerst auf dem ASP.NET-Box gespeichert werden:

  • die Datei lokal speichern (so etwas wie c:\uploads\temp oder was-haben-Sie
  • Verschieben Sie alle Dateien in diesem temporären Verzeichnis von server1 auf server1 zu einem bestimmten Intervall oder zu Ihrem ausgewählten Ereignis auf server2
  • Verwenden Sie System.IO.File.Move
string[] files = System.IO.Directory.GetFiles(@"c:\uploads\temp"); 

foreach (string s in files) 
{ 
    string fileName = System.IO.Path.GetFileName(s); 
    string destFile = System.IO.Path.Combine(targetPath, fileName); 
    System.IO.File.Copy(s, destFile); 
}