none
get Content-Length from url RRS feed

  • Frage

  • Hallo,

    ich möchte gerne vor dem Download einer Datei dessen Größe wissen.

    Nach etwas suche hatte ich das hier gefunden:

    $webClient = New-Object System.Net.WebClient
    $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Open_Kitkat_Ger_D01_140307.pdf")
    [Int64]$fileSize = $webClient.ResponseHeaders["Content-Length"]
    Write-Host $fileSize


    Das liefert mir auch die gewünschte Größe, jedoch funktioniert die Abfrage nur 2x, wenn ich das Script zum 3x starte, auch mit einer anderen url scheitert es mit folgendem Fehler:

    + $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Op ...

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : WebException

    Wenn ich eine neue Console öffne funktioniert es wieder 2x.

    Das hilft leider auch nicht:

    Remove-Variable fileSize
    Remove-Variable webClient

    Kann mir jemand helfen?

    Danke schon mal für die Hilfe.


    • Bearbeitet Bjoernar Donnerstag, 14. Juni 2018 20:10
    Donnerstag, 14. Juni 2018 20:09

Antworten

  •  Siehe hier: LINK
    "You must call Stream.Close when finished with the Stream to avoid running out of system resources."
     

    Du musst den Stream (OpenRead) als eigenes Objekt erzeugen und nach dem Lesen wieder schließen (s.u.). Dann kannst du das unbegrenzt wiederholen.

    $webClient = New-Object System.Net.WebClient
    $stream = $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Open_Kitkat_Ger_D01_140307.pdf")
    [Int64]$fileSize = $webClient.ResponseHeaders["Content-Length"]
    Write-Host $fileSize
    $stream.close()

     
    Wenn du ganz damit durch bist, ist es ne gute Idee das Objekt zu verwerfen, mit $Stream.dispose() .

    Grüße, Denniver  


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.



    Samstag, 16. Juni 2018 01:19
    Moderator

Alle Antworten

  • > + $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Op ...

    Ohne das ausprobiert zu haben: $WebClient.Dispose - https://msdn.microsoft.com/de-de/library/system.net.webclient(v=vs.110).aspx

    Freitag, 15. Juni 2018 11:56
  •  Siehe hier: LINK
    "You must call Stream.Close when finished with the Stream to avoid running out of system resources."
     

    Du musst den Stream (OpenRead) als eigenes Objekt erzeugen und nach dem Lesen wieder schließen (s.u.). Dann kannst du das unbegrenzt wiederholen.

    $webClient = New-Object System.Net.WebClient
    $stream = $webClient.OpenRead("https://downloads.giga.de/android/SM-G900F_UM_Open_Kitkat_Ger_D01_140307.pdf")
    [Int64]$fileSize = $webClient.ResponseHeaders["Content-Length"]
    Write-Host $fileSize
    $stream.close()

     
    Wenn du ganz damit durch bist, ist es ne gute Idee das Objekt zu verwerfen, mit $Stream.dispose() .

    Grüße, Denniver  


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.



    Samstag, 16. Juni 2018 01:19
    Moderator