Mysql
 sql >> Database >  >> RDS >> Mysql

Caricare un documento word, salvarlo su mysql e visualizzarlo

Ci sono alcuni argomenti da discutere qui.

Il modulo

Per caricare il file, cambia l'attributo enctype del modulo.

<form action="insert.php" method="post" enctype="multipart/form-data">
    :
</form>

Memorizzazione del file

È possibile archiviare il file in un database o semplicemente come file nel sistema del disco del server. Qualunque cosa tu scelga, non è necessario dividere il file nelle sue righe. Archivia il file come una singola unità.

Leggi questo articolo che tratta l'argomento.

Dovrebbe essere sufficiente dire qui che il campo del tuo database dovrebbe essere di un tipo e una dimensione appropriati per contenere il file.

Personalmente, sono un fan dell'archiviazione del file su disco e del nome del file sul database.

Gestione del caricamento dei file

Puoi salvare il file da qualche parte sul disco. Questo non è il modo migliore per farlo, ma il più semplice da dimostrare. Ci sono abbastanza esempi su SO, ad esempio Come caricare e salvare file con il nome desiderato

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

Download del file Per visualizzare e scaricare il file, è sufficiente stampare il contenuto sul browser.

ob_start();
 // do things. See below
ob_clean();
flush();
readfile($file);
ob_flush();

Questo visualizzerà il file e probabilmente confonderà il browser. Per indicare al browser di gestire il file come documento Word, devi inviare le intestazioni appropriate al browser prima di inviare il file.

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