INetGet - Dateiname ?

  • Tag zusammen.

    Ich möchte per INetGet eine Datei mit Originalname in einem bestimmten Ordner speichern.

    Aktuell habe ich ein Problem mit INetGet.
    Bisher habe ich mir immmer aus der URL per StringSplit den letzten Teil der URL geholt,
    um daraus dann dann den Dateinamen zu holen.

    Das funktioniert bei rs.com und ul.to super.
    Leider habe ich bemerkt, dass andere Hoster, wie z.bsp. Megaupload den Dateinamen nicht mit in die URL schreiben.

    Wenn ich nun die Datei ganz normal lade, wird mir automatisch der originale Dateiname vorgeschlagen.
    An diesen möchte ich kommen.
    Nur leider kann ich bei INetGet beim Dateinamen nur zwischen "-1" (richtiger Name) und einem festen Pfad wählen.
    Was ich aber brauche ist ein Pfad + Originalname.

    Hoffe auf Hilfe,
    Dankeschön

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

    Einmal editiert, zuletzt von Dankeschön (18. Juli 2010 um 02:54)

  • Ok, habe nun folgende Funktion gefunden:

    [autoit]

    Func HTTPFileName($sUrl)
    $oHTTP = ObjCreate('winhttp.winhttprequest.5.1')
    $oHTTP.Open('POST', $sUrl, 1)
    $oHTTP.SetRequestHeader('Content-Type','application/x-www-form-urlencoded')
    $oHTTP.Send()
    $oHTTP.WaitForResponse
    $ContentDisposition = StringRegExp($oHTTP.GetResponseHeader("Content-Disposition"), 'filename="(.*)"',3)
    Return $ContentDisposition[0]
    EndFunc

    [/autoit]

    Leider kommt bei mir hinter GetResponseHeader ein Error...

    Nun habe ich mir mal den ganzen header geholt,
    wodrinne aber leider nichts von einem dateinamen steht.
    Anscheinend wird man von dort nochmal weitergeleitet...
    So lautet der Header :

    Hoffe auf Hilfe,
    Dankeschön

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Habs nun gelöst auf eine Art,
    die den Leuten von Google nicht weiterhelfen wird...

    Ich habe nun einfach den Quellcode von der mu.com oder netload.in adresse abgerufen,
    und dort den Dateinamen extrahiert.

    Steif und unvariabel,
    aber was soll man machen.

    Daher hier zum Mitschreiben :
    "Meine" obrige Funktion HTTPFileName sollte funktionieren.
    Zum Debugging (ganzer Header) einfach GetResponseHeader durch GetAllResponseHeader (sollte so heißen, googlet einfach mal) verwenden

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön