загрузить файл в MySql DB с помощью PHP

Я хочу, чтобы пользователи загружали файлы через мой webapp, который я разрабатываю в PHP usinig MySql в бэкэнд. Я хочу хранить файлы в базе данных. Я сталкиваюсь с проблемами при этом. Кроме того, как только файл хранится в базе данных, как мы его загружаем, он корректно отображает его в webapp (тип файла и другие атрибуты файла).

Я использую форму типа:

<FORM METHOD="post" ACTION="fileUpload.php" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="3000000">
<INPUT TYPE="hidden" NAME="action" VALUE="upload">
<TABLE BORDER="1"> <TR> <TD>Description: </TD> <TD><TEXTAREA NAME="txtDescription" ROWS="10" COLS="50"> </TEXTAREA></TD> </TR> <TR> <TD>File: </TD> <TD><INPUT TYPE="file" NAME="binFile"></TD> </TR> <TR> <TD COLSPAN="2"><INPUT TYPE="submit" NAME="Upload" VALUE="Upload"></TD> </TR> </TABLE> </FORM>

но когда я отправляю его и я распечатываю массив $ _POST, я получаю: Array ([MAX_FILE_SIZE] => 3000000 [action] => upload [txtDescription] => jassfhjabsf [Upload] => Upload)

Я не могу понять, где теряется содержимое файла «binFile». Может ли кто-нибудь помочь мне?

С уважением, Майанк.

Возможно, вы захотите взглянуть на раздел загрузки руководства PHP: Обработка загрузки файлов ; это, вероятно, будет хорошим началом 😉

Например, вы можете видеть, что информация файла хранится в $_FILES , а не в $_POST (см. Метод POST-загрузки ) – по крайней мере, учитывая ваш пример, я предполагаю, что вы ищете файл в $_POST , а не $_FILES .

в вашем случае, учитывая, что поле ввода называется « binFile », вы, вероятно, захотите использовать var_dump (или любой эквивалент) на $_FILEs['binFile'] , чтобы увидеть, что внутри 😉

Затем вы можете использовать is_uploaded_file и move_uploaded_file для работы с самим файлом.

Затем вы уверены, что хотите сохранить содержимое файла в базе данных, а не на диске, только сохраняя в БД путь к файлу?

Об этом вы можете взглянуть на этот вопрос и его ответы: Хранение изображений в БД – Да или Нет? – это не специфично для PHP, но идеи все равно должны быть правдой.

Может быть, где хранить загруженные файлы (звук, картинки и видео) тоже может помочь 😉
То же самое касается хранения небольшого количества изображений: blob или fs? , и / или сохранять изображения в виде файлов или в базе данных для веб-приложения?

Загружаемый файл отправляется в каталог загрузки.

Вы можете получить имя файла, просмотрев $_FILES['binFile']['tmp_name']

Вы должны что-то сделать с файлом до завершения скрипта, иначе веб-сервер удалит его.

Вы должны прочитать содержимое файла и поместить его в столбец BLOB .

он находится в каталоге tmp, пока вы не переместите его

 $userfile = $_FILES['binFil']['tmp_name']; move_uploaded_file($userfile , "somedir"); 

Послесловие вы должны определить, что это такое с чем-то вроде

 $userfileExt = array_pop(explode(':', $userfile));