Я начинающий в разроботке сайтов, сечас я делаю личный кабинет пользователя. У меня возникла проблема с реализацией смены фото у пользователя.
Мне нужно чтобы по нажатию на кнопку открывалось окно проводника, человек выбирал фото и оно загружалось в бд, а потом при заходе в профиль фото выгружалось на страницу
Мне нужно понять как сделать загрузку фото в бд и как его выгружать из бд на php.
HTML форма:
<form action="/accept.php" enctype="multipart/form-data" method="post">
<label for="file">Прикрепить файл:</label>
<input type="file" name="file" id="file">
<input value="Отправить" type="submit">
</form>
Прием файла в accept.php:
$uploadfile = basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], './' . $uploadfile)) {
echo "Файл успешно загружен.\n";
}
Источник с информацией по передаче файлов
Для сохранения файла рекомендую создать какое-то хранилище на сервере и кидать данные в по генерированному пути, чтобы избежать дублирования файлов. Пример кода как это можно реализовать:
/**
* Расчитать новый путь в хранилище
*
* @param string $storagePath
* @param string $originalPath
* @param boolean $saveOriginalFileName
*/
protected function calculatePath($storagePath, $originalPath, $saveOriginalFileName = false)
{
$path = $this->calculateMiddlePath($storagePath, $originalPath);
if (!file_exists($path)) {
mkdir($path, 0777, true);
}
return $path . '/' . $this->calculateFileName($originalPath, $saveOriginalFileName);
}
/**
* Сгенерировать путь до файла
*
* @param string $storagePath
* @param string $originalPath
*/
private function calculateMiddlePath($storagePath, $originalPath)
{
$pathMid = str_split(md5($originalPath . strtotime('now')), 4);
$pathMid = implode('/', $pathMid);
return $storagePath . $pathMid;
}
/**
* Сгенерировать новое имя файла
*
* @param string $originalPath
* @param bool $saveOriginalFileName
*/
private function calculateFileName($originalPath, $saveOriginalFileName)
{
if ($saveOriginalFileName) {
return basename($originalPath);
}
return md5($originalPath) . '.' . pathinfo($originalPath, PATHINFO_EXTENSION);
}
Как вам уже подсказали в комментариях, хранить файлы в базе данных - не лучшая идея. Достаточно сохранить сгененированный путь.
P.S Не стоит увлекаться с генерацией длинного пути)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Каким образом стилизовать (раскрасить) значения DataFrame из одной части колоночного индекса на основании значений из другой части колоночного...
Сделал сайт на php, решил сделать десктопный клиент, используя nwjs, но столкнулся с проблемой: при запуске nw
У меня проблема мне нужно сделать чтобы одна картинка была внизу а другая как бы поверх егоНо получается все наоборот знает кто нибудь как...
Я пытаюсь создать мало-мальски нормальную плашку, но мало того что при не моем формате экрана сливаются слова, так еще и картинка не отображаетсяОна...