Sprache: C#
Mithilfe der Klasse FtpWebRequest eine lokale Datei auf einen Ftp Server abspeichern.
private void SaveOnFtP()
{
//Eine neue Datei erstellen und lokal speichern (Beispiel hier: Textfile)
StreamWriter w = new StreamWriter("C://Beispiele/MyFile.txt", true);
w.WriteLine("BlaBlaBla");
w.Close();
//Ein Request erstellen an den ftp Server
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.meinftp.ch/");
//Die Methode angeben um eine Datei hochzuladen
request.Method = WebRequestMethods.Ftp.UploadFile;
//Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
request.Credentials = new NetworkCredential("Username", "Passwort");
try
{
//Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
WebResponse response = request.GetResponse();
MessageBox.Show("Response hat funktioniert");
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
//Neuer FileStream erstellen für die Datei
FileStream fs = new FileStream("C://Beispiele/MyFile.txt", FileMode.Open);
byte[] fileContents = new byte[fs.Length];
fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
fs.Flush();
fs.Close();
//Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
//Verbindung abbschliessen
request.Abort();
}
/*
* Die Datei ist nun auch lokal gespeichert
*und muss dort wieder gelöscht werden.
*/
private void SaveOnFtP()
{
//Eine neue Datei erstellen und lokal speichern (Beispiel hier: Textfile)
StreamWriter w = new StreamWriter("C://Beispiele/MyFile.txt", true);
w.WriteLine("BlaBlaBla");
w.Close();
//Ein Request erstellen an den ftp Server
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.meinftp.ch/");
//Die Methode angeben um eine Datei hochzuladen
request.Method = WebRequestMethods.Ftp.UploadFile;
//Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
request.Credentials = new NetworkCredential("Username", "Passwort");
try
{
//Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
WebResponse response = request.GetResponse();
MessageBox.Show("Response hat funktioniert");
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
//Neuer FileStream erstellen für die Datei
FileStream fs = new FileStream("C://Beispiele/MyFile.txt", FileMode.Open);
byte[] fileContents = new byte[fs.Length];
fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
fs.Flush();
fs.Close();
//Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
//Verbindung abbschliessen
request.Abort();
}
/*
* Die Datei ist nun auch lokal gespeichert
*und muss dort wieder gelöscht werden.
*/
Alte URL:
/snippet/datei-auf-einen-ftp-uploaden/494
Was muss man da als using noch angeben? so klappt es nicht
Hallo,
[code]using System.Net;
using System.IO;[/code]
werden benötigt.
Jan
Hallo habe Probleme mit der URI bekomme immer wieder gesagt URI ist für diesen Befehl ungültig aber eigentlich müsste Sie passen! Bsp.:ftp://www.freenet.de
Hier eine Methode, die um einiges kürzer ist:
[code]{
string dateipfad = „C:\PfadDatei.*“;
string FTP = „ftp://domain.*/Datei.*“;
string FTPuser = „deinBenutzer“;
string FTPpasswort = „deinPasswort“;
My.Computer.Network.UploadFile(dateipfad, FTP, FTPuser, FTPpasswort);
}[/code]
@Klemens
Nett gemeint, aber die „My“ Namespace steht nur unter Visual Basic.NET zur Verfügung.
@Jan: du bekommst die Network-Klasse auch unter C# aus dem Namespace Microsoft.VisualBasic.Devices in Microsoft.VisualBasic.dll
Der Code funktioniert so nicht, VisualStudio bringt den Fehler:
[b]Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff).[/b]
Den Fehler kann man beheben, wenn man den FtpWebRequest etwas anders erstellt.
Man muss sollte ihn so erstellen:
[code]
String strFilename = „File.txt“;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(„ftp://ftp.meinftp.ch/“+strFilename);
[/code]