ciao a tutti sto creando un sito dove è possibile scaricare dei file txt,pdf, word, exel che vengono caricati dagli utenti...
Il problema è il download perchè l'upload funziona e carico i file come medimblob...
i codici sono:
index.php
Codice PHP:
Appunto:
Codice PHP:
<?
$getid=$_GET['id'];
$result = mysql_query("SELECT * FROM tabella_appunto where id='$getid'");
while($row = mysql_fetch_array($result)){
$file = $row['appunto'];
}
echo "<a href=\"download.php?file={$file}\">".$riga["nome"]."</a><br />";?>
Qui è dove passo il mio file alla pagina download che dovrebbe scaricare i file...
download.php
Codice PHP:
<?php
function download($file, $path = '.')
{
$file = realpath($file);
if (!is_file($file)) {
throw new InvalidArgumentException(sprintf(
'The file "%s" does not exist.',
$file
));
}
$path = realpath($path);
if (dirname($file) != $path) {
throw new InvalidArgumentException(sprintf(
'The file "%s" is not located in "%s".',
$file,
$path
));
}
if (headers_sent()) {
throw new LogicException('Headers have been already sent.');
}
$mimeTypes = array(
'exe' => 'application/octet-stream',
'html' => 'text/html',
'doc' => 'application/msword',
'pdf' => 'application/pdf',
'png' => 'image/png',
'jpg' => 'image/jpeg',
'txt' => 'text/plain',
);
$bytes = filesize($file);
$info = pathinfo($file);
$ext = strtolower($info['type']);
$type = isset($mimeTypes[$ext]) ? $mimeTypes[$ext] : 'application/octet-stream';
header('Content-Transfer-Encoding: binary');
header("Content-Type: {$mt}");
header("Content-disposition: attachment; filename={$info['appunto']}.{$info['type']}");
header("Content-length: {$bytes}");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
readfile($file);
}
if (isset($_GET['file'])) {
try {
download($_GET['file']);
} catch (Exception $e) {
die($e->getMessage());
}
}
?>
grazie in anticipo per l'aiuto spero di essere stato chiaro...