Det finns några ämnen att diskutera här.
Formuläret
För att ladda upp filen, ändra formen enctype-attribut.
<form action="insert.php" method="post" enctype="multipart/form-data">
:
</form>
Lagra filen
Du kan lagra filen i en databas, eller bara som fil i serverns disksystem. Vad du än väljer är det inte nödvändigt att dela upp filen i dess rader. Lagra filen som en enhet.
Läs det här inlägget som diskuterar ämnet.
Det bör räcka med att säga här att ditt databasfält bör vara av lämplig typ och storlek för att hålla filen.
Personligen är jag ett fan av att lagra filen på disk, och filnamnet i databasen.
Hantering av filuppladdning
Du kan spara filen någonstans på disken. Detta är inte det bästa sättet att göra det, utan det enklaste att demonstrera. Det finns tillräckligt många exempel på SO, till exempel Hur man laddar upp och sparar filer med önskat namn
$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);
Ladda ner filen För att få filen att visas och ladda ner, skriv bara ut innehållet till webbläsaren.
ob_start();
// do things. See below
ob_clean();
flush();
readfile($file);
ob_flush();
Detta kommer att visa filen och förmodligen förvirra webbläsaren. För att säga åt webbläsaren att hantera filen som ett Word-dokument måste du skicka lämpliga rubriker till webbläsaren innan du skickar filen.
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();