paule22 Geschrieben 24. Januar 2002 Geschrieben 24. Januar 2002 Hallo CGI-Programmer, hat jemand von euch eine Idee/ein Skript, wie ich ein dowload einer Datei nicht wie etwa so: <a href="test.zip">test.zip</a>, sondern mittels CGI-Skript in etwa so: <a href="www.domain.net/dowload.cgi?id=1>test.zip</a> bewerkstelligen kann??? - Ist für eine Download-Statistik. bin für jeden Source-Code dankbar. Danke schon mal im Vorraus paul Zitieren
Impulz Geschrieben 24. Januar 2002 Geschrieben 24. Januar 2002 Hallo du, mit einem Perlscript kann ich leider nicht dienen, aber ich kann dir zwei moeglichenkeiten nennen dies zu tun, vielleicht hilft dir das ja schon. 1. Du ziehst aus ner Datenbank o.ä. den Dateinamen der zu der ID passt und setzt dann anhand von nem header die URL um. (In PHP: header("Location ".$dateiurl); ) 2. Du ziehst wieder aus der Datenbank den Dateinamen, oeffnest diese Datei dann aber, liest den Inhalt, sendest einen Header mit Content-Type und gibst dann die Daten aus. Vorteil der Methode 2 ist, dass die Benutzer keine moeglichkeit haben herauszufinden wo die Datei tatsaechlich liegt. Dafuer isses etwas aufwendiger Vielleicht hilfts dir ja Michael Zitieren
paule22 Geschrieben 24. Januar 2002 Autor Geschrieben 24. Januar 2002 aha, danke für deine Tips. was für einen content-typ meinst du??? text/html oder text/plain kenne ich nur mit folgenden Code öffne ich eine Datei: open (DATA,"$base_data/test.zip") || &file_io_error; @lines = <DATA>; close(DATA); und wie bekomme ich nun "@lines" dazu einen Download durchzuführen: mit: print "content-type: text/plain\n\n"; .... foreach $data (@lines) { print "$data"; } .... kann ich die @lines einer HTML-Datei ausgeben, wie jedoch mit deiner Methode 2 ??? danke für Antworten paul Zitieren
Impulz Geschrieben 24. Januar 2002 Geschrieben 24. Januar 2002 Hallo, ja das waere mit einer Binaerdatei so in etwa das selbe. Du musst halt wissen welchen Mime-Type die Datei haben soll. Es gibt da ne ganze Reihe, z.b. image/jpg, image/gif, ... Eine Liste findest du hier: http://selfhtml.teamone.de/diverses/mimetypen.htm#uebersicht Anhand des Typs erkennen viele Browser/Proxy die Art der Datei (wenn du sie z.b. mit einem CGI Skript ausgibst, weiss der Browser ja die urspruengliche Dateiendung nicht also benutzt er den Content-Type um zu sehen wie er mit der Datei umzugehen hat). Michael Zitieren
paule22 Geschrieben 24. Januar 2002 Autor Geschrieben 24. Januar 2002 danke, hat mir sehr geholfen!!! nur wie bekomme ich das skript dazu, einen bestimmten Dateinamen beim Download anzunehmen??? folgendes skript bringt "test.pl" als download result - ich will aber "test.zip" - wie gehts? #!/usr/bin/perl $document_root = ".."; $base_data = "$document_root/WWW/files/turbo3.zip"; print "Content-type: application/zip\n\n"; open (DATA,"$base_data") || &file_io_error; @lines = <DATA>; close(DATA); foreach $data (@lines) { print "$data"; } exit; sub file_io_error { print "<html><head><title></title></head>"; print "<body>"; print "<h1>Die Datei konnte nicht geoeffnet werden."; print "</body></html>"; exit; } Zitieren
Impulz Geschrieben 24. Januar 2002 Geschrieben 24. Januar 2002 Hallo, schoen zu hoeren dass es klappt Es gibt noch folgende Header-Definition: header("Content-Disposition: attachment; filename=$filename"); Versuch mal dieses Content-Disposition: attachment; filename=dateiname noch hinter das content-type zu haengen, soweit ich weiss muessen die durch nen \n getrennt sein. Michael Zitieren
paule22 Geschrieben 24. Januar 2002 Autor Geschrieben 24. Januar 2002 danke !!! nachdem ich den Header auf folgende Zeilen gesetzt habe hat es geklappt: print "Content-type: application/zip;\n"; print "Content-Disposition: filename=test.zip; attachment\n\n"; vielen Dank für die Hilfe Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.