Zu FTP verbinden mit C# ?
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
beispiel
code
datei
eigenschaft
erstellen
file
forum
ftp
funktion
mensch
nachname
page
passen
private set
problem
setzen
string
system
url
vorname
-
Heyho lima-city-Community!
Weiß jemand wie ich mich mit C# Consoe zu FTP verbinde um z. B. ein Foto hochzuladen oder geht sowas mit PHP - C# ?!
Ich bin ein Anfänger in C# also bitte seid gnädig :)
MfG TeamMeinInternet -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Beispiel:
http://dotnet-snippets.de/snippet/datei-auf-einen-ftp-uploaden/494
Beitrag zuletzt geändert: 1.12.2015 22:34:18 von sv00010 -
sv00010 schrieb:
Beispiel:
http://dotnet-snippets.de/snippet/datei-auf-einen-ftp-uploaden/494
Danke, das hat mir echt weitergeholfen! Jetzt muss ich nur noch gucken wie ich das mit dem Dateiupload von Screenshots anstelle ;) -
Moinsen ^^
static void Main(string[] args) { var pic = Screenshot(); pic.Save(Guid.NewGuid().ToString() + ".jpg"); // Name des Bilds } public static Bitmap Screenshot() { Bitmap screen = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height); using (Graphics g = Graphics.FromImage(screen)) { g.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, screen.Size); g.Dispose(); } return screen; }
Sollte so passen, falls nicht, sag bescheid.
MfG Trancer.
P.S.: Ich persönlich finde es nicht gut, wenn man auf andere Foren verlinkt ohne ein Kommentar. Problem dabei ist, dass wenn das Forum/die Page offline geht, wird der Link ins Nichts führen und alle die diesen Thread lesen verstehen nicht worum es geht.
-
trancedrome schrieb:
Moinsen ^^
static void Main(string[] args) { var pic = Screenshot(); pic.Save(Guid.NewGuid().ToString() + ".jpg"); // Name des Bilds } public static Bitmap Screenshot() { Bitmap screen = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height); using (Graphics g = Graphics.FromImage(screen)) { g.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, screen.Size); g.Dispose(); } return screen; }
Sollte so passen, falls nicht, sag bescheid.
MfG Trancer.
P.S.: Ich persönlich finde es nicht gut, wenn man auf andere Foren verlinkt ohne ein Kommentar. Problem dabei ist, dass wenn das Forum/die Page offline geht, wird der Link ins Nichts führen und alle die diesen Thread lesen verstehen nicht worum es geht.
Das ist jetzt aber für Forms und nicht für die Konsol oder? -
teammeininternet schrieb:
Das ist jetzt aber für Forms und nicht für die Konsol oder?
Das sieht eher nach der Konsole aus.
Es sei denn deine Klasse heißt wirklich Main.
Beitrag zuletzt geändert: 7.12.2015 8:10:24 von onlinevideorecorder -
teammeininternet schrieb:
trancedrome schrieb:
Moinsen ^^
static void Main(string[] args) { var pic = Screenshot(); pic.Save(Guid.NewGuid().ToString() + ".jpg"); // Name des Bilds } public static Bitmap Screenshot() { Bitmap screen = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height); using (Graphics g = Graphics.FromImage(screen)) { g.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, screen.Size); g.Dispose(); } return screen; }
Sollte so passen, falls nicht, sag bescheid.
MfG Trancer.
P.S.: Ich persönlich finde es nicht gut, wenn man auf andere Foren verlinkt ohne ein Kommentar. Problem dabei ist, dass wenn das Forum/die Page offline geht, wird der Link ins Nichts führen und alle die diesen Thread lesen verstehen nicht worum es geht.
Das ist jetzt aber für Forms und nicht für die Konsol oder?
Eigentlich brauchst du bei meinem Beispiel nur die Funktion "Screenshot" aufrufen und den Output (welches ein System.Drawing.Bitmap ist) speichern und via FTP hochladen.
Es ist richtig, dass du noch den Verweis auf "System.Windows.Forms" brauchst, damit du die Funktion nutzen kannst.
Also System.Windows.Forms und System.Drawing in die Verweise und in die Usings aufnehmen, dann solltest du keine Probleme haben.
Falls doch noch Probleme bestehen, bitte ich einmal um den Sourcecode - dann kann ich es einfacher debuggen, als das ich versuche dein Programm selber nachbaue.
(Wobei ich gerade daran denke, es wirklich zu tun ^.^)
EDIT:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Windows.Forms; using System.Net; using System.IO; class Program { static void Main(string[] args) { var pic = Screenshot(); string file = Guid.NewGuid().ToString() + ".jpg"; pic.Save(file); SaveOnFtP(file); Console.ReadLine(); } public static Bitmap Screenshot() { Bitmap screen = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height); using (Graphics g = Graphics.FromImage(screen)) { g.CopyFromScreen(SystemInformation.VirtualScreen.X, SystemInformation.VirtualScreen.Y, 0, 0, screen.Size); g.Dispose(); } return screen; } private static void SaveOnFtP(string file) { //Ein Request erstellen an den ftp Server FtpWebRequest request = (FtpWebRequest)WebRequest.Create("[FTP-SERVER-URL]" + file); //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("[BENUTZER]", "[PASSWORT]"); bool isConnected = false; try { //Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten WebResponse response = request.GetResponse(); Console.WriteLine("Response hat funktioniert"); isConnected = true; } catch (Exception exp) { Console.WriteLine(exp.ToString()); } if (isConnected) { //Neuer FileStream erstellen für die Datei FileStream fs = new FileStream(file, 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(); Console.WriteLine("Datei hochgeladen."); } } }
Mir war langweilig ^.^ Nur so ein kleiner Consolen-Problem.
Beitrag zuletzt geändert: 8.12.2015 0:32:08 von trancedrome -
Das sieht ganz gut aus und werd ich auch testen, aber da kann ich jetzt selber keinen Screenshot machen oder? (Sry programmier noch nich lange und noch nich so viel mit new :( )
PS:
Du hast die Methode mit dem Login private gemacht weil es sicherer ist und das public damit es auch außerhalb der Klasse aufrufbar ist oder? Nur für mich :) zum lernen
Beitrag zuletzt geändert: 18.12.2015 17:28:10 von teammeininternet -
teammeininternet schrieb:
Das sieht ganz gut aus und werd ich auch testen, aber da kann ich jetzt selber keinen Screenshot machen oder? (Sry programmier noch nich lange und noch nich so viel mit new :( )
PS:
Du hast die Methode mit dem Login private gemacht weil es sicherer ist und das public damit es auch außerhalb der Klasse aufrufbar ist oder? Nur für mich :) zum lernen
Die Accessors habe ich mehr oder weniger zufällig genutzt.
Bei der OOP (Objektorientierte Programmierung) werden public und private für Methods oder Property (Eigenschaften) um die Sichtbarkeit / Zugriffsmöglichkeit darzustellen.
Habe ich zum Beispiel eine Klasse mit zwei Properties
public class Mensch { public string Vorname; public string Nachname; }
oo kann ich diese Klasse mit
var mensch = new Mensch();
erzeugen.
Über
mensch.Vorname = "Max"; mensch.Nachname = "Mustermann";
habe ich nun die beiden Eigenschaften nun mit einem Value gefüllt.
Ändere ich die Klasse nun wie folgt:
public class Mensch { public string Vorname { get; private set; } public string Nachname { get; private set; } }
Kann ich die Eigenschaften nur noch von Innen setzen.
ABER da meine Mensch-Klasse keine Funktionen noch einen Konstruktor hat, kann ich die Properties nicht setzen.
Damit ich die Properties nun setzen kann erweitere ich die Klasse nun um einen Konstruktor:
public class Mensch { public Mensch(string vorname, string nachname) { this.Vorname = vorname; this.Nachname = nachname; } public string Vorname { get; private set; } public string Nachname { get; private set; } }
Der Aufrufe ist nun so
var mensch = new Mensch("Max", "Mustermann");
und man kann die beiden Properties von Außen abrufen
string vorname = mensch.Vorname; string nachname = mensch.Nachname;
Ich hoffe das konnte irgendwie ein wenig helfen!
Ich möchte dazu sagen, dies ist nur ein kleines Beispiel. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage