Zde je několik témat, která je třeba prodiskutovat.
Formulář
Chcete-li soubor nahrát, změňte atribut enctype formuláře.
<form action="insert.php" method="post" enctype="multipart/form-data">
:
</form>
Ukládání souboru
Soubor můžete uložit do databáze nebo jen jako soubor na diskový systém serveru. Ať už zvolíte cokoli, není nutné rozdělovat soubor na řádky. Uložte soubor jako jednu jednotku.
Přečtěte si tento záznam, který pojednává o daném tématu.
Zde by mělo stačit říci, že vaše databázové pole by mělo mít vhodný typ a velikost pro uložení souboru.
Osobně jsem fanouškem ukládání souboru na disk a názvu souboru v databázi.
Zpracování nahrávání souborů
Soubor můžete uložit někam na disk. Není to nejlepší způsob, jak to udělat, ale nejjednodušší to předvést. Na SO je dost příkladů, například Jak nahrát a uložit soubory s požadovaným názvem
$info = pathinfo($_FILES['upload']['name']);
$ext = $info['extension']; // get the extension of the file
$newname = "newname.".$ext;
$target = 'mydocs/'.$newname;
move_uploaded_file( $_FILES['upload']['tmp_name'], $target);
Stahování souboru Chcete-li soubor zobrazit a stáhnout, pouze vytiskněte obsah do prohlížeče.
ob_start();
// do things. See below
ob_clean();
flush();
readfile($file);
ob_flush();
Tím se soubor zobrazí a pravděpodobně zmate prohlížeč. Chcete-li prohlížeči sdělit, aby se souborem nakládal jako s dokumentem aplikace Word, musíte před odesláním souboru odeslat do prohlížeče příslušná záhlaví.
ob_start();
if(isset($_REQUEST['dlink']))
{
$file = $_REQUEST['dlink'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
ob_flush();