Servire un file da una directory privata [chiuso]

0

Ho un PDF che deve essere accessibile per più aree non correlate su un sito web. Non voglio rivelare nulla su dove viene scaricato il file e voglio caricare il file una sola volta.

È possibile servire un file memorizzato nello spazio privato, invece di memorizzarlo in una directory pubblica. In tal caso, qualcuno può indicarmi la direzione corretta o dare un esempio?

    
posta nobrandheroes 04.02.2015 - 19:01
fonte

2 risposte

2

PHP fornisce la funzione int fpassthru (risorsa $ handle) . Si apre un file e quindi fpassthru invia il file in uscita semplicemente copiandolo sull'output senza archiviarlo, consentendo l'invio di file potenzialmente di grandi dimensioni.

<?php
// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

Se puoi, è meglio evitare di usare PHP per fare qualcosa di diverso dal configurare il download iniziale e poi passare il download effettivo al server web per controllare (e quindi rilasciare un processo PHP). Se controlli il server, puoi installare / attivare mod_xsendfile (per Apache) o l'equivalente Nginx, X-accel .

    
risposta data 05.02.2015 - 22:59
fonte
2

Sì. Le parole chiave sono: file streaming con php.

È qualcosa del genere:

echo file_get_contents('secretfolder/the_file.pdf');

Fai una ricerca o dai uno sguardo a: link

    
risposta data 04.02.2015 - 20:10
fonte

Leggi altre domande sui tag