Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Carregar um documento do Word, armazená-lo no mysql e exibi-lo


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();