diff --git a/action/acceder_document.php b/action/acceder_document.php index 601c5b6b616dd6ad0af9514c1e1dc019eed80462..f2288fd08f3537d29f32147197a9888382b5c138 100644 --- a/action/acceder_document.php +++ b/action/acceder_document.php @@ -89,42 +89,23 @@ function action_acceder_document_dist() { break; default: - header('Content-Type: ' . $doc['mime_type']); - - // pour les images ne pas passer en attachment - // sinon, lorsqu'on pointe directement sur leur adresse, - // le navigateur les downloade au lieu de les afficher + include_spip('inc/livrer_fichier'); + $options = ['attachment' => false]; if ($doc['inclus'] == 'non') { + $options['attachment'] = true; // Si le fichier a un titre avec extension, // ou si c'est un nom bien connu d'Unix, le prendre // sinon l'ignorer car certains navigateurs pataugent - - $f = basename($file); if ( isset($doc['titre']) and (preg_match('/^\w+[.]\w+$/', $doc['titre']) or $doc['titre'] == 'Makefile') ) { - $f = $doc['titre']; + $options['attachment'] = $doc['titre']; } - - // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 - header('Content-Type: application/octet-stream'); - - header("Content-Disposition: attachment; filename=\"$f\";"); - header('Content-Transfer-Encoding: binary'); - - // fix for IE catching or PHP bug issue - header('Pragma: public'); - header('Expires: 0'); // set expiration time - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - } - - if ($cl = filesize($file)) { - header('Content-Length: ' . $cl); } - - readfile($file); + spip_livrer_fichier($file, $doc['mime_type'], $options); + exit; break; } }