Downloadlinks von Dateien

alexros schrieb am 06.04.2012 um 21:25 Uhr

Hallo,

statt einen Download vom Server zu starten, öffnet die website ein Bild vom Server in einem neuen Fenster, ich will aber, dass beim Klicken zumindest die Abfrage öffnen, speichern, abbrechen kommt.

Wie kann ich einen Text markieren und ihm sagen, bei klicken bitte die Datei Bild1.jpeg von Server Ordner Bilder downloaden soll?

Bei einer ppt-datei macht er das, aber bei Bildern eben nicht.

Wäre dankbar

ALEX

Kommentare

Ehemaliger User schrieb am 07.04.2012 um 20:38 Uhr

Das kannst du in dem Sinne auch nicht so einfach beeinflussen, denn jeder hat zu hause seine Einstellungen, was mit Dateitypen passieren soll beim anklicken. Was wohl geht, das man einen script dafür einsetzt.

BeRo schrieb am 07.04.2012 um 21:03 Uhr

[...] Wie kann ich einen Text markieren und ihm sagen, bei klicken bitte die Datei Bild1.jpeg von Server Ordner Bilder downloaden soll? [...]

Das ist zwar kein echtes Problem, aber leider nicht mit einer einfachen Einstellung zu erledigen.
Du musst dazu schon ein bisschen Vorbereitungsarbeit machen.

Wie Janvo vorhin schon ganz richtig gesagt hat, kannst Du für diese Aufgabe ein Script einspannen.

Folgende Voraussetzungen müssen erfüllt sein:

  1. Dein Webspace (Server) muss php- und idealerweise auch .htaccess unterstützen.
  2. Es muss ein php Script in einem bestimmten Verzeichnis (s. u.)Deines Webspace abgelegt werden.
  3. Eventuell musst Du zusätzlich eine .htaccess Datei auf dem Webserver ablegen.
  4. Alle Dateien, die Du zum Download anbieten willst, müssen in einem weiteren Unterverzeichnis abgelegt werden (s. u.).
  5. Die Links zu den o. a., Dateien müssen angepasst werden.

Zu 1.
Ob Dein Webspace php- und .htaccess unterstützt, kannst Du bei Deinem Provider erfragen oder einfach austesten.

Zu 2.
Das php Script (Quelle),  das Du benötigst, sieht so aus:

---------------------------------------
<?php
// this is a relative path from this file to the
// directory where the download files are stored.
$path='files';

// first, we'll build an array of files that are legal to download
chdir($path);
$files=glob('*.*');

// next we'll build an array of commonly used content types
$mime_types=array();
$mime_types['ai']    ='application/postscript';
$mime_types['asx']   ='video/x-ms-asf';
$mime_types['au']    ='audio/basic';
$mime_types['avi']   ='video/x-msvideo';
$mime_types['bmp']   ='image/bmp';
$mime_types['css']   ='text/css';
$mime_types['doc']   ='application/msword';
$mime_types['eps']   ='application/postscript';
$mime_types['exe']   ='application/octet-stream';
$mime_types['gif']   ='image/gif';
$mime_types['htm']   ='text/html';
$mime_types['html']  ='text/html';
$mime_types['ico']   ='image/x-icon';
$mime_types['jpe']   ='image/jpeg';
$mime_types['jpeg']  ='image/jpeg';
$mime_types['jpg']   ='image/jpeg';
$mime_types['js']    ='application/x-javascript';
$mime_types['mid']   ='audio/mid';
$mime_types['mov']   ='video/quicktime';
$mime_types['mp3']   ='audio/mpeg';
$mime_types['mpeg']  ='video/mpeg';
$mime_types['mpg']   ='video/mpeg';
$mime_types['pdf']   ='application/pdf';
$mime_types['pps']   ='application/vnd.ms-powerpoint';
$mime_types['ppt']   ='application/vnd.ms-powerpoint';
$mime_types['ps']    ='application/postscript';
$mime_types['pub']   ='application/x-mspublisher';
$mime_types['qt']    ='video/quicktime';
$mime_types['rtf']   ='application/rtf';
$mime_types['svg']   ='image/svg+xml';
$mime_types['swf']   ='application/x-shockwave-flash';
$mime_types['tif']   ='image/tiff';
$mime_types['tiff']  ='image/tiff';
$mime_types['txt']   ='text/plain';
$mime_types['wav']   ='audio/x-wav';
$mime_types['wmf']   ='application/x-msmetafile';
$mime_types['xls']   ='application/vnd.ms-excel';
$mime_types['zip']   ='application/zip';

// did we get a parameter telling us what file to download?
if(!$_GET['file']){
   // if not, create an error message
   $error='No file specified to download';
}elseif(!in_array($_GET['file'],$files)){
   // if the file requested is not in our array of legal
   // downloads, create an error for that
   $error='Requested file is not available';
}else{
   // otherwise, get the file name and its extension
   $file=$_GET['file'];
   $ext=strtolower(substr(strrchr($file,'.'),1));
}
// did we get the extension and is it in our array of content types?
if($ext && array_key_exists($ext,$mime_types)){
   // if so, grab the content type
   $mime=$mime_types[$ext];
}else{
   // otherwise, create an error for that
   $error=$error?$error:"Invalid MIME type";
}

// if we didn't get any errors above
if(!$error){
   // if the file exists
   if(file_exists("$file")){
      // and the file is readable
      if(is_readable("$file")){
         // get the file size
         $size=filesize("$file");
         // open the file for reading
         if($fp=@fopen("$file",'r')){
            // send the headers
            header("Content-type: $mime");
            header("Content-Length: $size");
            header("Content-Disposition: attachment; filename=\"$file\"");
            // send the file content
            fpassthru($fp);
            // close the file
            fclose($fp);
            // and quit
            exit;
         }
      }else{ // file is not readable
         $error='Cannot read file';
      }
   }else{  // the file does not exist
      $error='File not found';
   }
}
// if all went well, the exit above will prevent anything below from showing
// otherwise, we'll display an error message we created above
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<title>Image Download</title>
</head>
<body>
<h1>Download Failed</h1>
<?php
   if($error) print "<p>The error message is: $error</p>\n";
?>
</body>
</html>

---------------------------------

Das komplette Script (rot markierter Text), kannst Du mit copy & paste in einen Texteditor übernehmen und als Datei "index.php" auf Deinem Webspace speichern (s. u).
Das Script ist universell verwendbar. Es werden alle üblichen Dateiformate unterstützt, die für Downloads in Frage kommen.

Um das Script korrekt einzubinden, legst Du Dir auf dem Webspace ein neues Verzeichnis "downloads" an,
Das Verzeichnis muss in dem Verzeichnis angelegt werden, in dem Du Dein Projekt mit dem WD veröffentlichst.
In das neu angelegte Verzeichnis "downloads" kopierst Du dann die "index.php".
Eventuell, wenn Du mit der .htaccess Datei arbeiten willst, kommt hier auch noch diese Datei hinein, dann müssen allerdings auch die Links anders aussehen. Mehr Infos dazu findest Du auf der englischsprachigen Website, die Du über den o. a. Quellen Link öffnen kannst.
 

Zu 4.
In dem unter 3. angelegten Unterverzeichnis "downloads" legst Du nun ein weiteres Unterverzeichnis an, das Du "files" nennst.
In diesem Verzeichnis legst Du alle Dateien ab, die Du auf Deiner Website zum Download anbieten willst.

Zu 5.
Die Links zu den Dateien werden so angelegt, wie Links auf externe Webseiten, wobei nicht die komplette URL angegeben werden muss, sondern lediglich der Pfad + Variablenübergabe an die "index.php" + Dateiname (s. Screenshot). Der Pfad zeigt also nicht direkt auf "downloads/files/dateiname.ext"




Im Beispiel habe ich diesen Link benutzt: "downloads/index.php?file=Audio.jpg" (s. o.)

Eine funktionsfähige Demosite, mit aktivem Download Link, habe ich hier online gestellt.

Die komplette Projektdatei, inkl. aller benötigten Scripts und Musterdatdeien kannst Du Dir hier  als ZIP Archiv herunterladen.

Viel Erfolg und viel Spaß beim weiteren Website Design.

---------------

P.S.
Die online gestellten Dateien bleiben für ca. 1 Monat aktiv. Danach nehm' ich sie wieder vom Server (Platzgründe).
Wer danach noch Bedarf hat, kann mir gerne eine PN schreiben

Zuletzt geändert von BeRo am 07.04.2012, 21:42, insgesamt 3-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

ralfog schrieb am 07.04.2012 um 23:07 Uhr

Warum immer so MEGA schwer wenn es auch einfacher geht !!

Hier ein Supper fertiger KOSTENLOSER Script

http://www.gentlesource.de/datei-download/

Es ist dort sehr gut beschrieben wie man den Script einsetzt ohne php gedöns^^

hier noch ein html besp. was ich gerade mal dazu geschrieben haben...

<p align="center">
<a target="_blank" href="http://www........../download_files/index.php?.....datei verlinken..."><img style="border: none;" title="Name wie der download heißen soll" src="http://www....verlingung wenn man mag auf ein download pic" width="100" height="100" alt="" /></a>
</p><br/

 

BeRo schrieb am 08.04.2012 um 00:03 Uhr

@ ralfog

[...] Es ist dort sehr gut beschrieben wie man den Script einsetzt ohne php gedöns [...]

Schön wär's

Ich zitiere mal aus der Konfig Info des von Dir genannten Anbieters, der obendrein verlangt, dass die "gratis" mitgelieferte Werbung übernommen werden muss, wenn man das Script kostenfrei benutzen will...

----------------------------
Konfiguration

Die Datei "index.php" stellt die Konfigurationsdatei für das Script dar. Sie haben dadurch die Möglichkeit, die Datei zu duplizieren und mit anderen Konfigurationen aufzurufen und zu betreiben, trotzdem aber den selben Script-Kern zu nutzen.

Folgende Variablen können editiert werden:

[...]
------------------------------------

 

Zuletzt geändert von BeRo am 08.04.2012, 00:03, insgesamt 1-mal geändert.

Auf den Tag genau gehen heute, am 14.08.2021, 10 Jahre online Support für die Community zu Ende.
Ich freue mich auf eine neue, berufliche Herausforderung, die sich gerade ergeben hat. Leider bleibt dann keine Zeit mehr für die Community übrig, aber Ihr seid bei den aktiven Mitgliedern in besten Händen.
Sicher schaue ich auch ab und zu nochmal rein... 🤓

Ehemaliger User schrieb am 08.04.2012 um 08:39 Uhr

BeRo viele wissen gar nicht, das ein script in einer Programmiersprache geschrieben ist und das häufig php ist.

ralforg es gibt im Internet für eine Aufgabe, wo meist viele Scripte existieren.eigentlich sollte man BeRo dankbar sein, das er direkt den script veröffentlicht, so brauht man den code nur kopieren und in einer Datei abspeichern fertig, das ganze ist dann ohne werbung, das beste was man haben kann.

ralfog schrieb am 08.04.2012 um 15:00 Uhr

 

BeRo viele wissen gar nicht, das ein script in einer Programmiersprache geschrieben ist und das häufig php ist.

ralforg es gibt im Internet für eine Aufgabe, wo meist viele Scripte existieren.eigentlich sollte man BeRo dankbar sein, das er direkt den script veröffentlicht, so brauht man den code nur kopieren und in einer Datei abspeichern fertig, das ganze ist dann ohne werbung, das beste was man haben kann.

Wie jeder es mag ! ich versuche zumindestens meinen Web Kunden die von meiner Firma eine Page erstellt haben wollen oder auch bekommen, es so einfach wie möglich zu machen wenn es gewünscht ist ..und Ihre Antwort zu dem Download Problem ging ja schon sehr ins Detail und ich vermute es, daß es auch kaum nachvollziehbar ist für den laien! Ich habe absichtlich in der Antwort nicht php erwähnt, um nicht noch mehr verwirrend zu wirken!

Übrings Testen Sie bitte mal ihre Ausführungen in den üblichen Internet- Explorern .. dann sehen Sie selber das Ihre Anleitung in der Praxis nicht immer das gewünschte Ergebniss bringt!

Trotzdem wünsche ich Ihnen frohe Ostern 2012

alexros schrieb am 10.04.2012 um 00:55 Uhr

Vielen Dank schon mal für die rege Diskussion, da ich mich sehr schlecht auskenne, werde ich mal beide im Laufe der Woche ausprobieren und dann sagen was für mich besser und einfacher und verständlicher war.

 

MFG

Alex

kleineheide schrieb am 12.06.2012 um 13:12 Uhr

Hallo,

ich habe über die "SUFU" diesen Beitrag gefunden und beide vorgestellten scipt-Varianten ausprobiert. Das von BeRo ist mir sympatischer, keine Werbung und man kann es noch ein bisschen anpassen. Ich habe die Möglichkeit "RAR-Verzeichnisse" herunter zu laden, mit eingetragen.

Allerdings muss ich bekennen, dass mir seine Erklärung nicht gleich verständlich war. Hat aber am Ende dann doch funktioniert. Vielen Dank