По соображениям безопасности я решил, что загрузка изображений профиля пользователя в базу данных, а не просто папку и выгрузку адресов изображений, была бы хорошей идеей.
Я никогда не имел дела с загрузкой файлов в бэкенде раньше, но, прочитав об этом из разных источников, я считаю, что все делаю правильно. Однако никакие полезные двоичные данные не загружаются.
в php .ini
file_uploads = On
Во внешнем интерфейсе
<form enctype="multipart/form-data" method="post" autocomplete="on" action="upload/">
<p>
<input type="file" id="avatar" name="avatar" accept="image/png, image/jpeg" required />
<label for="avatar">*Profile photo</label>
</p>
<p class="submitter two-thirds columns">
<input type="submit" value="Apply" />
</p>
</form>
В бэкэнде
if(isset($_SESSION['id']))
$UserID = $_SESSION['id'];
else exit(1);
if (!empty($_FILES['avatar'])){
$photo = fopen($_FILES['avatar']["tmp_name"], 'rb');
$photo_mime = $_FILES['avatar']["type"];
}
else exit(1);
$values_data = array(
$UserID,
$photo,
$photo_mime,
);
$sql = "INSERT INTO `user`
(
UserID,
photo,
photo_mime
)
VALUES
(
:UserID,
:photo,
:photo_mime
)
ON DUPLICATE KEY UPDATE
photo = :photo,
photo_mime = :photo_mime
";
$sth = $dbh->prepare($sql);
$sth->bindValue(':UserID', $values_data[0]);
$sth->bindValue(':photo', $values_data[1]);
$sth->bindValue(':photo_mime', $values_data[2]);
$sth->execute();
И база данных получает некоторую информацию
mysql phpmyadmin
Однако все эти двоичные файлы изображений имеют размер 1 КБ. Заглянув внутрь, у них есть такие данные:
Идентификатор ресурса # 13
Итак, двоичные файлы испорчены или сброшены где-то вдоль линии ... но где ?