Entwickler-Ecke

ASP.NET und Web - Bilder geuploaded aber nicht angezeigt?


cemolade - So 06.03.11 16:34
Titel: Bilder geuploaded aber nicht angezeigt?
hey leute.

mein programm macht einen screenshot vom desktop und der wird dann als png oder jpeg abgespeichert. dann lade ich das bild auf meinen ftp server hoch!
das funktioniert ja alles, aber dann klicke ich das bild am ftp server an, und es wird nur "Bild" angezeigt oder ein X oderso.. die filegröße am ftp stimmt mit dem am pc überein, also wird alles übertragen.
das komische ist aber, wenn ich die bilder über FileZilla(ftp client programm) hochlade dann werden sie angezeigt =/

btw.. wisst ihr wie man dateien am server überschreibt ? einfach eine datei mit dem selben namen uploaden geht leider nicht.

danke schonmal


Moderiert von user profile iconKha: Topic aus WinForms verschoben am So 06.03.2011 um 18:53


jaenicke - So 06.03.11 16:50

Meine Glaskugel ist leider gerade vom Tisch gerollt und kaputt, deshalb sehe ich deinen Quelltext nicht mehr. :nixweiss: :roll:

Woher sollen wir den wissen was du da machst?


cemolade - So 06.03.11 16:54

sorry für deine glaskugel >_<
ich helf dir mal aus :D

screenshot machen


Quelltext
1:
2:
3:
4:
                bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                gfx = Graphics.FromImage(bmp);
                gfx.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
                bmp.Save(@"C:\Users\Anonym\Desktop\streamit" + counter.ToString() + ".png", ImageFormat.Png);



bild uploaden


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://csharpkeylogger.cs.ohost.de/3E/streamit" + counter.ToString() + ".png");   //bin mir nicht sicher ob der Server Name so stimmt über Filezilla geht es mit ftp.drivehq.com schon.

                request.Method = WebRequestMethods.http://Ftp.UploadFile;


                // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential(benutzername, passwort);

                // Copy the contents of the file to the request stream.
                StreamReader sourceStream = new StreamReader("C:\\Users\\Anonym\\Desktop\\streamit" + counter.ToString() + ".png");
                byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                sourceStream.Close();
                request.ContentLength = fileContents.Length;

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();



                response.Close();


jaenicke - So 06.03.11 17:03

UTF8? Bei einer Binärdatei?
Wenn da jetzt zufällig Zeichen drin sind, die nach UTF8 aussehen, werden die eventuell umgewandelt. Ich weiß nicht was C# an der Stelle eigentlich macht.

Hast du denn einmal die hochgeladene Datei mit der echten verglichen?


cemolade - So 06.03.11 17:12

stimmt ! ich hab das einfach nur aus meinem txt-upload-test-programm stur rein kopiert^^

habs mal auf default gestellt, selbes problem.
wenn ich die datei über den filezilla öffnen will, gehts nicht. dateiformat wird in der fotoanzeige nicht unterstützt

komisch..
was kann ich tun?


jaenicke - So 06.03.11 17:18

Lade die Datei doch einfach wieder herunter und vergleiche die beiden. ;-)
Zum Beispiel mit HxD.

Was mir gerade auffällt: Du setzt UseBinary nirgends auf true. Du willst doch aber eine solche Datei übertragen. :idea:


cemolade - So 06.03.11 17:36

hab usebinary auf true gesetzt, gleich nachdem ich den FtpWebRequest deklariere, aber es funktioniert trotzdem nicht ):

wisst ihr noch was?


Kha - So 06.03.11 18:09

user profile iconcemolade hat folgendes geschrieben Zum zitierten Posting springen:
habs mal auf default gestellt, selbes problem.
Encoding.Default? Das ist immer noch Text...
Wie wäre es mit WebClient.UploadFile?


jaenicke - So 06.03.11 18:16

Sollte es nicht auch direkt mit den beiden Streams gehen?
http://msdn.microsoft.com/en-us/library/dd783870.aspx

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
                // Copy the contents of the file to the request stream.
                StreamReader sourceStream = new StreamReader("C:\\Users\\Anonym\\Desktop\\streamit" + counter.ToString() + ".png");
                Stream requestStream = request.GetRequestStream();
                sourceStream.CopyTo(requestStream);
                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                response.Close();


cemolade - So 06.03.11 19:44

@jaenicke gibt kein CopyTo

@Kha uhm, das wusste ich nicht, stimmt^^ aber wo mach ich das mit webclient.uploadfile? statt encoding.default?
gibts leider nicht =/


Kha - So 06.03.11 19:56

user profile iconcemolade hat folgendes geschrieben Zum zitierten Posting springen:
@jaenicke gibt kein CopyTo
Du solltest angeben, wenn du nicht mit 4.0 arbeitest.

user profile iconcemolade hat folgendes geschrieben Zum zitierten Posting springen:
@Kha uhm, das wusste ich nicht, stimmt^^ aber wo mach ich das mit webclient.uploadfile?
Hu. Darf ich annehmen, dass du dir nicht einmal die Hilfe zu der Methode angeschaut hast? Einen Tipp gebe ich dir: Sie ersetzt deinen ganzen bisherigen Upload-Code.

Zitat:
csharpkeylogger.cs.ohost.de
Müssen wir uns eigentlich Sorgen machen :gruebel: ?


cemolade - Mi 09.03.11 17:42

hey
kann ich um ein bild upzuloaden den streamreader überhaupt verwenden? brauch ich da nicht sowas wie den binaryreader?

ich arbeite schon mit 4.0? wenn ich auf properties gehe rechts im projektmappenexplorer, dann zeigt er mir netframework 4.0 an.

und nein das ist ein harmloser ftp server mit einem dummen namen^^ kannst ja mal rauf schaun xD


jaenicke - Mi 09.03.11 18:08

Stimmt :oops:, aber mit einem FileStream statt einem reinen StreamReader sollte es klappen. :idea:


cemolade - Mi 09.03.11 19:22

mh das geht glaub ich auch nicht.. kennt sich wer mit dem filestream aus? hab da probleme mit den parametern..
aber naja wie funktioniert das denn mit CopyTo? geht das so einfach? und wieso wird das bei mir nicht angeziegt?

bei der onlinehilfe zu CopyTo steht, dass es einfach dateien in ein verzeichnis kopiert, kann ich da einfach die adresse von einem ftp server angeben ? o.O

bitte kann mir wer helfen..?


jaenicke - Mi 09.03.11 20:37

user profile iconcemolade hat folgendes geschrieben Zum zitierten Posting springen:
mh das geht glaub ich auch nicht.. kennt sich wer mit dem filestream aus? hab da probleme mit den parametern..
Was ist da das Problem? Steht doch in der Doku was du da z.B. hinschreiben musst: :gruebel:
http://msdn.microsoft.com/de-de/library/47ek66wy.aspx
Einmal den Dateinamen und einmal FileMode.Open um die Datei zu öffnen.

user profile iconcemolade hat folgendes geschrieben Zum zitierten Posting springen:
bei der onlinehilfe zu CopyTo steht, dass es einfach dateien in ein verzeichnis kopiert
Öh... :gruebel:
Wo steht das? Nicht in dem Link zur Doku zu dem Befehl, den ich oben gepostet habe jedenfalls... :roll:
Ich vermute du bist in irgendeiner Datei- oder Verzeichnisklasse über einen gleichnamigen Befehl gestolpert.