sql >> Databasteknik >  >> RDS >> Mysql

Ladda upp ett word-dokument, lagra det på mysql och visa det

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



  1. MySQL ERROR 502:SELECT * FROM table WHERE uid=1 ORDER BY id DESC LIMIT 0, 100; Paginering fungerar inte

  2. Postgres INTERVAL med värde från tabell

  3. MySQL laddar NULL-värden från CSV-data

  4. Hur kan jag skriva en fullständig sökindexfråga som inte tar hänsyn till några stoppord?