Link locali in Firefox

Juna - 8 dic 2006

A volte può capitare di dovere accedere a files locali da alcuni script (html, js) con Firefox, cioè di avere sotto mano qualcosa che suona come:

<a href="file:///directory/file.ext">Clicca qui</a>

Nelle nuove versioni, Firefox impedisce di utilizzare script come questi per ragioni di sicurezza e al click sul link produce un messaggio che dice:

"Errore di sicurezza: I contenuti in <file> non possono caricare o avere collegamenti che rimandino a <file:///directory/file.ext>".

Essendo incappata anche io in questo (a dire il vero pernicioso) problema, ho fatto qualche ricerca online, apprendendo che secondo molti l'unico modo di sfuggire a questo controllo è mettere mano al file prefs.js nella cartella associata al profilo corrente di Firefox ed aggiungere alcune direttive.

Ho trovato questo metodo noioso e decisamente al di sopra delle possibilità dell'utente normale e quindi, valutato che questo tipo di funzione serve al 90% delle volte per vedere in anteprima dei files, ho escogitato un escamotage che può permettere di non andare a modificare affatto lo script di preferenze di Firefox.

Si tratta di leggere il file tramite php e poi "mascherare" il link da download utilizzando la funzione Header(); ad esempio si può utilizzare un file php che prende in input una variabile in GET (prova.php):

$url = $_GET['url'];
$handle = fopen($url, "r");
$contents = fread($handle, filesize($url));
fclose($handle);
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header("Content-Disposition: attachment; filename=\"".basename($url)."\";");
header('Content-Length: ' . filesize($url));
@readfile($url) OR die();

In questo modo, cliccando su un link formato in questo modo

<a href="prova.php?url=/percorso/al/file/NomeFile.Ext">Clicca qui</a>

si aprirà il celebre dialogo che permette di vedere in anteprima o salvare il file richiesto, come se si stesse a tutti gli effetti cercando di scaricarlo. 

 

grazie

gio - 21 giu 2007 11:17

GRAZIE!!!
Weblog Koan Progetti Foto Contatti