php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 14-10-2006, 15:13
Nowatree
 Newbie
Links : Onlinestatus : Nowatree ist offline
Registriert seit: Oct 2006
Beiträge: 2
Nowatree ist zur Zeit noch ein unbeschriebenes Blatt
Standard Dateien von externem FTP-Server downloaden

Hallo erst mal.

bis heute konnte ich alle meine PHP Probleme mit Hilfe von diversen Foren und googeln lösen. Doch nun habe ich ein Problem für welches ich noch nichts passendes gefunden habe.

Situation:
Ich erstelle gerade eine kleine Webseite die eine Bildergalerie enthält.
Diese Bilder sind von mir bearbeitet (Grösse verkleinert) und auf dem Webserver abgelegt. Die User können diese Bilder jetzt als Thumbernail und in Standardgrösse (so wie ich sie auf dem Webserver abgelegt habe) anschauen. Nun möchte ich die Bilder zum Download anbieten.
Die Standardbilder auf dem Webserver sind kein Problem. Die kann ich zum Download anbieten. -> Beim Bild kann ein Link (Bild downloaden) angeklickt werden. Darauf öffnet sich der Downloaddialog und der User kann festlegen wo er das Bild speichern will.

Aber hier kommt jetzt das Problem:
Die original Bilder in Originalgrösse liegen auf einem externen FTP-Server. Grund:Platzmangel auf dem Webserver.
(FTP-Server ist mein privater 'alter' Rechner der diese Aufgabe übernimmt. Der FTP-Server ist Passwort geschützt.)
Wie kann ich jetzt mit einem PHP-Script erreichen, dass die original Bilder zum Download angeboten werden? Sprich, der User bekommt das original Bild und nicht das welches auf dem Webserver zu sehen ist.

Im Moment benutze ich die folgende PHP-Funktion:

PHP-Code:
<?php

function dl_file($file){

  
//First, see if the file exists
   
if (!is_file($file)) { die("<b>404 File not found!</b>"); }

   
//Gather relevent info about file
   
$len filesize($file);
   
$filename basename($file);
   
$file_extension strtolower(substr(strrchr($filename,"."),1));

   
//This will set the Content-Type to the appropriate setting for the file
   
switch( $file_extension ) {
     
     case 
"pdf"$ctype="application/pdf"; break;
     case 
"exe"$ctype="application/octet-stream"; break;
     case 
"zip"$ctype="application/zip"; break;
     case 
"doc"$ctype="application/msword"; break;
     case 
"xls"$ctype="application/vnd.ms-excel"; break;
     case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
     case 
"gif"$ctype="image/gif"; break;
     case 
"png"$ctype="image/png"; break;
     case 
"jpeg":
     case 
"jpg"$ctype="image/jpg"; break;
     case 
"mp3"$ctype="audio/mpeg"; break;
     case 
"wav"$ctype="audio/x-wav"; break;
     case 
"mpeg":
     case 
"mpg":
     case 
"mpe"$ctype="video/mpeg"; break;
     case 
"mov"$ctype="video/quicktime"; break;
     case 
"avi"$ctype="video/x-msvideo"; break;
         case 
"txt"$ctype="text/plain"; break;
     
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     
case "php":
     case 
"htm":
     case 
"html": die("<b>Cannot be used for "$file_extension ." files!</b>"); break;
     
//case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;

     
default: $ctype="application/force-download";
   }

   
//Begin writing headers
   
header("Pragma: public");
   
header("Expires: 0");
   
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   
header("Cache-Control: public"); 
   
header("Content-Description: File Transfer");
   
   
//Use the switch-generated Content-Type
   
header("Content-Type: $ctype");

   
//Force the download
   
$header="Content-Disposition: attachment; filename=".$filename.";";
   
header($header );
   
header("Content-Transfer-Encoding: binary");
   
header("Content-Length: ".$len);
   @
readfile($file);
   exit;



 }

  
$file "Hier wird die Bilder-ID übergeben";
    
dl_file($file);

?>
PS: Die Funktion ist nicht von mir, weis aber leider nicht mehr woher ich die habe.

Gibt es überhaupt eine Möglichkeit meine gewünschte Aufgabe mit PHP zu lösen?

Wenn ja, bin ich für jede Hilfe dankbar die mir weiterhilft.

An diese Stelle schon mal vielen Dank!

Gruss Anton
Mit Zitat antworten
  #2 (permalink)  
Alt 14-10-2006, 16:44
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

um einen download anzubieten, musst du den zugriff auf den dateiinhalt haben (wie du anhand deiner aktuellen funktion siehst - readfile ist dafür zuständig). das kann das ft-protokoll nicht, deswegen wirst du die datei vor dem download immer erst temporär auf dem server zwischenspeichern müssen, auf dem php-läuft.

hier wurde ein ähnliches verfahren besprochen: http://www.delphipraxis.net/topic67300,0.html

siehe aber auch diese möglichkeit:
http://de3.php.net/manual/de/functio...file.php#63649

(kommentar von "stefan at stefandouma dot nl")

Geändert von penizillin (14-10-2006 um 17:09 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 14-10-2006, 18:23
Nowatree
 Newbie
Links : Onlinestatus : Nowatree ist offline
Registriert seit: Oct 2006
Beiträge: 2
Nowatree ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für die schnelle Hilfe,

ich werde mir diese Hinweise anschauen und auch die daraus resultierenden Möglichkeiten testen.

Und wieder bin ich dank der Hilfe von dritter Seite etwas schlauer geworden.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:45 Uhr.