Há alguns tópicos a serem discutidos aqui.
O formulário
Para fazer upload do arquivo, altere o atributo enctype do formulário.
<form action="insert.php" method="post" enctype="multipart/form-data">
:
</form>
Armazenando o arquivo
Você pode armazenar o arquivo em um banco de dados ou apenas como arquivo no sistema de disco do servidor. Seja qual for a sua escolha, não é necessário dividir o arquivo em suas linhas. Armazene o arquivo como uma única unidade.
Leia esta entrada que discute o tópico.
Deve ser suficiente dizer aqui que seu campo de banco de dados deve ser de um tipo e tamanho apropriados para conter o arquivo.
Pessoalmente, sou fã de armazenar o arquivo em disco e o nome do arquivo no banco de dados.
Manuseio de upload de arquivo
Você pode salvar o arquivo em algum lugar no disco. Esta não é a melhor maneira de fazê-lo, mas a mais simples de demonstrar. Há exemplos suficientes no SO, por exemplo Como fazer upload e salvar arquivos com o nome desejado
$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);
Baixando o arquivo Para visualizar e baixar o arquivo, basta imprimir o conteúdo no navegador.
ob_start();
// do things. See below
ob_clean();
flush();
readfile($file);
ob_flush();
Isso exibirá o arquivo e provavelmente confundirá o navegador. Para dizer ao navegador para tratar o arquivo como um documento do Word, você deve enviar os cabeçalhos apropriados ao navegador antes de enviar o arquivo.
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();