Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ein Word-Dokument hochladen, auf mysql speichern und anzeigen

Hier gibt es ein paar Themen zu diskutieren.

Das Formular

Um die Datei hochzuladen, ändern Sie das enctype-Attribut des Formulars.

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

Datei speichern

Sie können die Datei in einer Datenbank oder einfach als Datei im Plattensystem des Servers speichern. Was auch immer Sie wählen, es ist nicht notwendig, die Datei in ihre Zeilen aufzuteilen. Speichern Sie die Datei als einzelne Einheit.

Lesen Sie diesen Eintrag, der das Thema behandelt.

Es sollte hier genügen zu sagen, dass Ihr Datenbankfeld einen geeigneten Typ und eine geeignete Größe haben sollte, um die Datei aufzunehmen.

Persönlich bin ich ein Fan davon, die Datei auf der Festplatte und den Dateinamen in der Datenbank zu speichern.

Verwaltung des Datei-Uploads

Sie können die Datei irgendwo auf der Festplatte speichern. Dies ist nicht der beste Weg, es zu tun, aber am einfachsten zu demonstrieren. Es gibt genug Beispiele für SO, zum Beispiel So laden Sie Dateien mit dem gewünschten Namen hoch und speichern sie

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

Herunterladen der Datei Um die Datei anzuzeigen und herunterzuladen, drucken Sie einfach den Inhalt im Browser aus.

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

Dies wird die Datei anzeigen und wahrscheinlich den Browser verwirren. Um den Browser anzuweisen, die Datei als Word-Dokument zu behandeln, müssen Sie die entsprechenden Header an den Browser senden, bevor Sie die Datei senden.

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