Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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;

}

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

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

fein :-)

Michael

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.