В предыдущем материале Пример закачки файла в blob-поле таблицы MySQL я уже затрагивал тему загрузки файла в таблицу базы данных. Но в том случае файл уже находился на диске, хотя зачастую разработчики сталкиваются с проблемой получения файла от пользователя и дальнейшей его обработки. В этой статье я расширю тему и приведу пример "от и до", то есть получения файла и загрузки его в таблицу базы данных.

Для начала создадим или изменим нашу форму (form), в ней обязательно должно присутствовать ENCTYPE="multipart/form-data", то есть:
 

<form name="f1" ENCTYPE="multipart/form-data" method="post" action="main.php" target="B">

Для загрузки самого файла через форму, добавляем код:

<input type="file" name="red">

Теперь принимаем наш файл на другой странице:

if (array_key_exists("red",$_FILES) && is_uploaded_file($_FILES['red']['tmp_name']) && ($_FILES['red']['size'] > 0)) {
      //читаю файл
      $fd = fopen ($_FILES['red']['tmp_name'], "rb");
      $red = fread ($fd, $_FILES['red']['size']);
      fclose ($fd);
      $red = "'".addslashes($red)."'";
      //запишу файл на диск, прыгадыца
      $pathd = $_FILES['red']['name'];
      copy($_FILES['red']['tmp_name'], $pathd);
  }
else $red = 'Null'

Обратите внимание на строки:

      //запишу файл на диск, прыгадыца
      $pathd = $_FILES['red']['name'];
      copy($_FILES['red']['tmp_name'], $pathd);

Если Вы не планируете ничего делать с Вашим файлом дальше (например приложить его к письму и отправить уведомление с вложением для администратора), то можете эти строки исключить.

И наконец вставляем наш файл в базу данных:

$query = "insert into reports(the_date,rep_add) values (\"".date()."\",".$red.")";

или

$query = "update reports set the_date=\"".date()."\"";
//если в эту переменную что-то занесли
if ($red != 'Null') $query = $query.", rep_doc=".$red;
$query = $query." where rep_id=".$rid;

И, наконец, если Вы сохраняли файл на сайте для каких-то целей, можете его смело удалять:

if(!empty($pathd)) unlink($pathd);

Удачных Вам проектов!

Давайте делать интернет вместе!

Add comment


Security code
Refresh