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, 16: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, 17: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 18:09 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 14-10-2006, 19: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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
PG Job Site Pro

> Job Site Pro - web-basiertes Programm, auf PHP/MySQL für Erstellung der funktionellen Job Board Site gebaut. Das hat erweitertes Management-System für Arbeitssuchenden und Arbeitgeber und kann für bestimmte Länder, Regionen oder einfach generelle Job Si

05.02.2019 submit@ | Kategorie: PHP/ Management
ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:40 Uhr.