sql >> Database >  >> RDS >> Mysql

Een word-document uploaden, opslaan op mysql en weergeven

Er zijn een paar onderwerpen om hier te bespreken.

Het formulier

Om het bestand te uploaden, wijzigt u het attribuut formulier enctype.

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

Het bestand opslaan

U kunt het bestand in een database opslaan, of gewoon als bestand in het schijfsysteem van de server. Wat u ook kiest, het is niet nodig om het bestand in zijn regels te splitsen. Sla het bestand op als een enkele eenheid.

Lees dit bericht waarin het onderwerp wordt besproken.

Het zou voldoende moeten zijn om hier te zeggen dat uw databaseveld het juiste type en de juiste grootte moet hebben om het bestand te bevatten.

Persoonlijk ben ik een fan van het opslaan van het bestand op schijf en de bestandsnaam in de database.

Behandeling upload van bestanden

U kunt het bestand ergens op schijf opslaan. Dit is niet de beste manier om het te doen, maar wel de eenvoudigste om aan te tonen. Er zijn genoeg voorbeelden op SO, bijvoorbeeld Bestanden uploaden en opslaan met de gewenste naam

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

Het bestand downloaden Om het bestand weer te geven en te downloaden, hoeft u alleen maar de inhoud af te drukken naar de browser.

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

Hierdoor wordt het bestand weergegeven en wordt de browser waarschijnlijk in de war gebracht. Om de browser te vertellen om het bestand als een Word-document te verwerken, moet u de juiste headers naar de browser sturen voordat u het bestand verzendt.

    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 - Kan geen weergave maken met SET-variabele erin

  2. voorbereide instructie waarbij waarde in array staat

  3. Resultaten uit verschillende categorieën mixen, gerangschikt op score in MySQL

  4. Hoe te bestellen op datum in MySQL