[php] file van ftp halen & direct naar output sturen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Ik wil mensen via een webpage files kunnen laten downloaden vanaf een ftp server. Deze constructie is omdat het bedoeld is voor retards die geen ftp programma's snappen, en hen directe ftp:// url's geven kan niet omdat de ftp verbinding met passive mode moet (die ftp server zit achter een router).

Nu dacht ik, dat doen we even met een PHP scriptje dat die file van die ftp haalt en output: (voor de eenvoud heb ik alle error-checking en shit even achterwege gelaten)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$fileName = $_GET["file"];
$connection = ftp_connect("**FTPSERVER**",23558/*port*/);
ftp_login($connection,"**USERNAME**","**PASSWORD**"));
ftp_pasv($connection,true);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".fileName.";");
header("Content-Transfer-Encoding: binary");
$fileSize = ftp_size($connection,$fileName);
header("Content-Length: ".$fileSize);
ftp_get($connection,??TJA_WAT_MOET_HIER??,$fileName,FTP_BINARY);
ftp_close($connection);
?>
Het probleem zit hem in die 2e parameter van ftp_get, de output handle. Ik kan niet de file van ftp naar een tempfile op de server (waar dit script draait) downloaden, en dan met readfile de inhoud daarvan outputten, want het gaat om nogal grote bestanden (d.w.z. meer dan 50MB terwijl ik hier maar 50MB webspace heb).

Is er in PHP een soort file handle die naar de http output wijst? Dus dat ik ftp_get daarheen kan laten schrijven, en zo direct de data naar de bezoeker stuur?

Of is hier een andere oplossing voor?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

De server zal toch ergens zijn temp-files kwijt moeten. Als een gebruiker met 2K/s download en de server het bestand in 10 seconden binnen heeft moet de data ergens bewaard blijven. Welke methode je ook gebruikt, je zult een flinke hoeveelheid schijfruimte of geheugenruimte nodig hebben. Je verdubbelt bovendien het dataverkeer van iedere download.

Acties:
  • 0 Henk 'm!

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Ja ok, maar als dat niet via een file gaat die ik expliciet aanmaak, wordt die temp data ook niet op mijn webspace bewaard, maar ergens op "algemene temp / cache" ruimte van de betreffende webserver. Toch?

Dat van die verdubbeling van verkeer, dat is waar ja. Maar daar zie ik niet echt een oplossing voor, aangezien er toch data moet komen vanuit een ftp server die PASV vereist, naar users die dat niet supporten.