ciao,
sapete se con php è possibile forzare il download dei file anzichè aprirli sul browser?
ciao,
sapete se con php è possibile forzare il download dei file anzichè aprirli sul browser?
Ho provato a fare così, me lo scarica, ma dopo averlo scaricato non me lo apre:
Codice PHP:
<?php
// definisco una variabile con il percorso alla cartella
// in cui sono archiviati i file
$dir = $_GET['absolute_path2'];
// Recupero il nome del file dalla querystring
// e lo accodo al percorso della cartella del download
$file = $dir . $_GET['filename'];
// verifico che il file esista
if(!file)
{
// se non esiste chiudo e stampo un errore
die("Il file non esiste!");
}else{
// Se il file esiste...
// Imposto gli header della pagina per forzare il download del file
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= " . $file);
header("Content-Transfer-Encoding: binary");
// Leggo il contenuto del file
readfile($file);
}
?>
Ne ho provati 10 di script, neanche uno funziona...![]()
hai provato anche questo?
Questo, no. Comunque ho risolto grazie.![]()
Noooooo, credevo di aver risolto, sembrava funzionasse invece ad esempio il file di word me lo corrompe, cioè me lo apre ma lo modifica con tutti caratteri strani.![]()
questo è il codice:
Codice PHP:
$nomefile = $_GET['filename'];
header("Content-type: Application/octet-stream");
header("Content-Disposition: attachment; filename=".$nomefile);
header("Content-Description: Download scheda");
$file_name="../filesharing_files/".$nomefile;
readfile($file_name);
Ora sto provando quello che mi hai segnalato ma non trovo dove inserire $nomefileOriginariamente inviato da clasku
hai provato anche questo?
perchè se prendo il nome del file $nomefile = $_GET['filename']; poi come lo collego a quello script?
Chi mi darebbe una mano perfavore?
Mi scarica file corrotti
![]()
vuoi proprio reinventare la ruota?
un pezzo del codice che trovi sul manuale e che ti ho linkato prima: ti assicuro che con i pdf funzionaCodice PHP:
switch ($ext) {
case "pdf": $ctype="application/pdf"; break;
dacci un occhio, puoi usarla con facilità o modificarla come preferisci, ma rispetta le indicazioni che ci sono, soprattutto per i corretti header a seconda del file
Ci ho provato ad utilizzare quel codice e ti assicuro che non funziona.
Questo codice l'ho inserito nel file download.php e l'ho pubblicato dentro la directory FILE
Per richiamarlo uso questo link <?=$rowfile2['file']?>
Codice PHP:
$nomefile = $_GET['filename'];
function downloadFile( $nomefile ){
// Must be fresh start
if( headers_sent() )
die('Headers Sent');
// Required for some browsers
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// File Exists?
if( file_exists($nomefile) ){
// Parse Info / Get Extension
$fsize = filesize($nomefile);
$path_parts = pathinfo($nomefile);
$ext = strtolower($path_parts["extension"]);
// Determine Content Type
switch ($ext) {
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;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($nomefile)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
readfile( $nomefile );
} else
die('File Not Found');
}