Я хочу, чтобы пользователи загружали файлы через мой 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));