Benutzer mit den meisten Antworten
Net.HttpWebRequest.Create(file) funktioniert je nach http: auch mal nicht. Siehe Code Beispiel

Frage
-
Es soll eine auf einer Webseite vorhandene .jpg Datei gedownloaded werden und als .jpg Datei auf Laufwerk D:\ gespeichert werden. Natürlich gibt es die Möglichkeit direkt einen Download auszuführen mit wie: wClient.DownloadFile(SymbB, "D:\Test.jpg")[wClient vorher mit DIM definieren, SymbB ist der URL: String].
Jedoch so oder wie folgt bricht (offensichtlich der Server) die Übertragung ab, und zwar bei dem URL: http://i.colnect.net/f/705/851/Seiji-Ozawa.jpg [ist eine Briefmarke]. Mit der auf meiner eigenen Webseite vorhandene .jpg Datei aber auch bei anderen Webseiten funktioniert es. Verwunderlich ist nur, dass die manuell in der Explorer Zeile links ob. eingegebene URL Zeile sehr wohl die .jPG Datei auf der Computer HTML-Bildschirm zeigt. Die Web Fehlermeldung gibt nur an wie: Verbindung mit Server unterbrochen, mehr nicht.
Es würde mir auch reichen wenn die Pixel-Width und Pixel-Height gespeichert werden können. Dass Verwunderliche ist nur, dass z.B. mit der rechten Maustaste auf der Grafik .jpg -> Eigenschaften das Betriebssytem in Millisekunden diese Pixelwerte anzeigt. Sicherlich werden dabei die Pixel-Bytes nicht noch einmal eingelesen, denke ich. Aber meine Recherchen haben VB Code dafür bisher nicht gefunden.
Code Beispiel:
Private Sub TestJPG() 'Eigene Webseite OK colnect bricht ab!
Dim file As String = "http://www.stamplooker.de/Brfm/AFG/AFG 2041.jpg" 'Eigene Webseite OK Specify URL of an image http://i.colnect.net/f/705/851/Seiji-Ozawa.jpg wird unterbrochen
Dim request As System.Net.WebRequest = System.Net.HttpWebRequest.Create(file)
Dim response As System.Net.HttpWebResponse = request.GetResponse()
Dim stream As System.IO.Stream = response.GetResponseStream()
Dim length As Integer = response.ContentLength ' Get the length of the content
Dim bytes(length) As Byte ' Create a temporary array for the content of the file.
For i As Integer = 0 To length - 1 ' Get all bytes of the content
bytes(i) = stream.ReadByte() : ListBox2.Items.Add(i.ToString + "Bytes Downloaded")
Application.DoEvents()
Next
Using output As IO.Stream = System.IO.File.Create("D:\Test.jpg") ' 'Eigene Webseite OK Write the content to the local file nicht C:\ = System
output.Write(bytes, 0, bytes.Length)
End Using
response.Close() ' muss
End SubVielen Dank im voraus für eine Erleuchtung.
François Prick van Wely
- Bearbeitet Francois Prick van Wely Freitag, 26. August 2016 02:47
Antworten
-
Hallo François,
ich würde vermuten dass der Server etwas abfragt was der Browser beim Request zum Download mit sendet. Das könnte beispielsweise der User-Agent-String sein.
Und ich vermute genau das wird hier genutzt. Denn wenn ich im F12 Menü von Edge unter Emulation einen benutzerdefinierten User-Agent-String einstelle (--- in meinem Test), dann kann ich das Bild auch nicht mehr im Browser anzeigen.
Damit liegt es auf der Hand wie man das umgehen könnte, da der User-Agent-String ebenfalls mitgegeben werden kann. Der Anbieter sollte sich bei der Technik ebenfalls bewusst sein, dass man das recht leicht umgehen kann.
PS: Du kannst auch eine oder mehrere Antworten als Antwort markieren, das geht über den entsprechenden Link unter jedem Post.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 31. August 2016 06:18
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 6. September 2016 14:01
Alle Antworten
-
Hallo François,
Ich würde sagen, dass es nicht an Deinem Code liegt, weil ich ihn gerade getestet habe. Es werden Bilder von anderen URLs erfolgreich heruntergeladen und gespeichert, einschließlich dieser URL (dasselbe Bild, nur größer). Erhältst Du den Fehler The remote server returned an error (503) Server Unavailable?
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo
Dimitar hat Recht, wenn er sagt an deinem Code liegt es nicht (aber irgendwie doch). Die Seite verhindert durch diverse Code den Download der Bilder. Im Klartext der Eigentümer der Seite oder der Rechtinhaber möchte nicht, dass das Bild downgeladen wird. Jetzt kann man das natürlich umgehen, aber das ist dann etwas was nicht "schön" ist und somit gibt es auch kein Code, sorry
mfg monarch
-
Hallo Dimitar und Monarch,
ihr habt ja recht, sowas von recht! Meine Fehlermeldung ist in Deutsch und ohne Nummer wie "Verbindung wurde vom Server unerwartet unterbrochen".
Monarch hat es wohl richtig erfasst; der Inhaber möchte nicht, dass seine Bilder heruntergeladen werden. Ich vermutete dass schon, denn 2015 ging es noch.
Die Frage ist noch: wie schaft der Inhaber das? Nicht um es zu umgehen, sondern um es vielleicht selber mal anzuwenden. Er müsste merken ob eine Anfrage von einer HTML-Seite oder manuel von einer Explorer-Leiste li. ob. kommt oder ob ein Download-Befehl von einem Computer kommt.
Vielen Dank für Eure prompte Hilfe. Ich vergebe noch Punkte.
François
- Bearbeitet Francois Prick van Wely Samstag, 27. August 2016 06:34
-
Hallo François,
ich würde vermuten dass der Server etwas abfragt was der Browser beim Request zum Download mit sendet. Das könnte beispielsweise der User-Agent-String sein.
Und ich vermute genau das wird hier genutzt. Denn wenn ich im F12 Menü von Edge unter Emulation einen benutzerdefinierten User-Agent-String einstelle (--- in meinem Test), dann kann ich das Bild auch nicht mehr im Browser anzeigen.
Damit liegt es auf der Hand wie man das umgehen könnte, da der User-Agent-String ebenfalls mitgegeben werden kann. Der Anbieter sollte sich bei der Technik ebenfalls bewusst sein, dass man das recht leicht umgehen kann.
PS: Du kannst auch eine oder mehrere Antworten als Antwort markieren, das geht über den entsprechenden Link unter jedem Post.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 31. August 2016 06:18
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 6. September 2016 14:01