Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przesyłanie dokumentu Word, przechowywanie go w mysql i wyświetlanie

Jest tu kilka tematów do omówienia.

Formularz

Aby przesłać plik, zmień atrybut formularza enctype.

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

Przechowywanie pliku

Możesz przechowywać plik w bazie danych lub jako plik w systemie dyskowym serwera. Cokolwiek wybierzesz, nie musisz dzielić pliku na jego wiersze. Zapisz plik jako pojedynczą jednostkę.

Przeczytaj ten wpis omawiający ten temat.

Wystarczy powiedzieć, że pole bazy danych powinno mieć odpowiedni typ i rozmiar do przechowywania pliku.

Osobiście jestem fanem przechowywania pliku na dysku i nazwy pliku w bazie danych.

Obsługa przesyłania plików

Możesz zapisać plik gdzieś na dysku. Nie jest to najlepszy sposób, ale najprostszy do zademonstrowania. Na SO jest wystarczająco dużo przykładów, na przykład Jak przesyłać i zapisywać pliki o pożądanej nazwie

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

Pobieranie pliku Aby wyświetlić i pobrać plik, wystarczy wydrukować zawartość w przeglądarce.

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

Spowoduje to wyświetlenie pliku i prawdopodobnie zmyli przeglądarkę. Aby poinformować przeglądarkę, aby obsłużyła plik jako dokument programu Word, przed wysłaniem pliku należy wysłać odpowiednie nagłówki do przeglądarki.

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL/PDO::quote(), Umieszczanie pojedynczych cudzysłowów wokół liczb całkowitych

  2. Nie znaleziono odpowiedniego sterownika dla jdbc w Spark

  3. Laravel - PDO Prepared Statement - Nie można wykonywać zapytań, gdy inne niebuforowane zapytania są aktywne

  4. Instalowanie Railsów, MySQL itp. wszystko idzie nie tak

  5. Przechowywanie dużego formatu JSON — binarnego lub tekstowego