Sono riuscito a fare il download ed il delete del file dal disco ma non sono riuscito a fare la cosa più semplice: il download.
L'errore è qui:
Codice PHP:
if (isset($_GET['action']) and ( $_GET['action'] == 'view' or $_GET['action'] == 'download') and
isset($_GET['id'])) {
include 'db.inc.php';
try {
$sql = 'SELECT filename, mimetype, url
FROM filestore
WHERE id = :id';
$s = $pdo->prepare($sql);
$s->bindValue(':id', $_GET['id']);
$s->execute();
} catch (PDOException $e) {
$error = 'Database error fetching requested file.';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
exit();
}
$file = $s->fetch();
if (!$file) {
$error = 'File with specified ID not found in the database!';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
exit();
}
$filename = $file['filename'];
$mimetype = $file['mimetype'];
$url = $file['url'];
$disposition = 'inline';
if ($_GET['action'] == 'download') {
$mimetype = 'application/octet-stream';
$disposition = 'attachment';
}
// Content-type must come before Content-disposition
header('Content-length: ' . strlen($url));
header("Content-type: $mimetype");
header("Content-disposition: $disposition; filename=$filename");
header("Location: $url");
echo $url;
exit();
}
in pratica lo script mi salva un file senza estensione con l'url del file invece che il file. A mio avviso l'errore è qui:
Codice PHP:
header('Content-length: ' . strlen($url));
header("Content-type: $mimetype");
header("Content-disposition: $disposition; filename=$filename");
header("Location: $url");
echo $url;
exit();
però non so come correggere...