Zum Inhalt springen

Download einer Datei mittel CGI-Skript einleiten/durchführen


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...