Der er et par emner, der skal diskuteres her.
Formularen
For at uploade filen skal du ændre formen enctype-attributten.
<form action="insert.php" method="post" enctype="multipart/form-data">
:
</form>
Gemmer filen
Du kan gemme filen i en database eller bare som fil i serverens disksystem. Uanset hvad du vælger, er det ikke nødvendigt at opdele filen i dens linjer. Gem filen som en enkelt enhed.
Læs dette indlæg, som diskuterer emnet.
Det skulle være tilstrækkeligt at sige her, at dit databasefelt skal være en passende type og størrelse til at indeholde filen.
Personligt er jeg fan af at gemme filen på disken og filnavnet på databasen.
Håndtering af filupload
Du kan gemme filen et sted på disken. Dette er ikke den bedste måde at gøre det på, men den enkleste at demonstrere. Der er nok eksempler på SO, for eksempel Sådan uploader og gemmer du filer med det ønskede navn
$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);
Downloader filen For at få vist filen og downloade den, skal du blot udskrive indholdet til browseren.
ob_start();
// do things. See below
ob_clean();
flush();
readfile($file);
ob_flush();
Dette vil vise filen og sandsynligvis forvirre browseren. For at bede browseren om at håndtere filen som et Word-dokument, skal du sende de relevante overskrifter til browseren, før du sender 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();