kleines downloader Problem (anfänger)
-
Hi... ich bin ein absoluter Anfänger und wollte mal als kleines projekt einen Downloader von bildern schreiben . Man soll den Pfad zu einem Dateiverzeichniss angeben können z.b. http://www.Website.com/Urlaub und den Ort wohin es auf dem PC gespeichert werden soll ... z.b. C:\ ich bin bisher soweit gekommen :
(Ich weiss der Code ist echt nicht schön
)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; namespace Downloader { class downloader { static void Main(string[] args) { string URL; string Path; Console.WriteLine("# PicDownloader v.01 #"); Console.WriteLine(""); Console.WriteLine("Bitte URL zum Dateiverzeichniss angeben"); URL = Console.ReadLine(); Console.WriteLine("Bitte den Pfad zum Speichern des Bildes angeben"); Path = Console.ReadLine(); WebClient dl = new WebClient(); int num = 0; num = ++num; Path = Path +num +".jpg"; dl.DownloadFile(URL, Path); } } }
Mein Problem ist jetzt: Wie liste ich alle Dateien im Verzeichniss der URL auf??? Und wie erstelle ich eine Zufallszahl (anstelle von ++num da es ja eh nichts bringt weil die variable beim neustart der Programms wieder auf 0 ist..)
Falls ich mit meinem ersten Post schon unannehmlichkeiten bereite sagt mir bitte was ich besser machen kann
-
foreach (string File in System.IO.Directory.GetFiles("C:\\")) { if(File.Split('.').Length > 1)//Damit die Ordner nicht auch ausgegeben werden Console.WriteLine(File); }
Und eine Zufallszahl machst du mit
Random r = new (Random);
r.Next(Niedrigste,Höchste);
aber vllt wäre es besser einen Zähler zu machen der solange hochzählt bis der Dateiname noch nicht vergeben ist dann kannst du img001 z.b. machen
-
ich habs mir jetzt noch nich ausprobiert aber soweit ich es verstehe zeigt es die Dateien im Ordner auf dem PC an oder? Das kann ich selber coden aber ich würd gern wissen wie ich die dateien im ordner der url anzeigen lasse
Trotzdem vielen Dank für die Antwort
-
µBx schrieb:
...aber ich würd gern wissen wie ich die dateien im ordner der url anzeigen lasse
Das geht meines Wissens nach nicht, jedenfalls nicht ohne weiteres. Das ist technisch bedingt, denn eine URL mit http Protokoll bezieht sich auf eine Datei auf dem Zielserver, nicht auf ein "Verzeichnis", das gibt es so nicht, also kann nicht via URL aufgerufen werden.
Webserver haben eine Einstellung, die da glaube ich heisst "Allow directory listing" (beim IIS ist's glaube ich so). Hier bekommst du eine von Webserver generierte HTML Datei mit den Verzeichnisinhalten zurueckgesendet, sofern deine aufrufende URL keine Datei direkt anspricht, z.B. bei "http://www.meinserver.de/bilder/". Hier greift auch die Einstellung im Webserver, dann bei Nichtangabe einer Datei in der URL eine Default-Datei dann gesendet wird, z.B. "index.html". Gibt es sie nicht, dann generiert der Webserver diese Webseite mit den Dateien im Verzeichnis - oder einen 403 HTTP Fehler wenn "directory listing" nicht aktiviert ist.
Was du benoetigst ist dieses "allow directory listing" und dann Wertet Dein Programm die als HTML-Datei gesendete 'Inhaltverzeichnis' aus. Oder du rufst eine Serverscriptdatei auf, welche im betr. Verzeichnis liegt und alle Dateien in irgendeinem Format zuruecksendet, z.B. "meinedateien.php" - vorrausgesetzt der betr. Webserver kann und darf serverseitig Scripte wie "php" ausfuehren.Das wird ein groesseres Kapitel, aber so im groben ist das so wie beschrieben,.
-
Achso tut mir Leid habs wohl falsch verstanden :-P, das was du willst geht nur mit nem ftp
-
Ich würde mir am Start die schon gespeicherten Datein angucken und die höchste Zahl raussuchen.Mit einer Zufallszahl ist nicht sichergestellt das der Name nicht mehrfach vorkommt.Oder wenigstens eine GUID benutzen.