Как загрузить изображение с заранее заданным именем на php /

Позвольте мне объяснить, чего я надеюсь достичь:

Я хочу разрешить моим пользователям загружать изображение в качестве аватара.

Я нашел много руководств по загрузке php, но я не знаю, как загружать аватары как user_id.ext в папку / avatars.

Надеюсь, я был понятен, спасибо.


person m3tsys    schedule 19.04.2012    source источник
comment
что мешает вам изменить имя после завершения загрузки?   -  person Elen    schedule 19.04.2012
comment
php.net/move_uploaded_file - Пример № 1 измените значение $name на любое желаемое.   -  person Mike B    schedule 19.04.2012
comment
хорошо, но как отправить $ user_id со страницы загрузки в файл, который обрабатывает загрузку изображения?   -  person m3tsys    schedule 19.04.2012
comment
Вы не должны размещать $user_id в форме ... кто угодно может изменить это значение и заменить аватар другого пользователя. Разве вы не можете получить $user_id из сеанса или другого источника аутентификации? Мы не знаем, как структурировано ваше приложение, поэтому предоставить полное / конкретное решение невозможно.   -  person Mike B    schedule 19.04.2012


Ответы (2)


В любом сценарии загрузки вы выполняете несколько основных шагов. Сначала вы получаете данные из $ _FILES, сообщающие вам, где находится временный файл загрузки. Вы проверяете файл на основе чего-либо, чтобы убедиться, что он не является злым / вредоносным / неправильным. Затем вы его переименовываете и перемещаете в полезное место. На последнем шаге, когда вы перемещаете изображение туда, куда оно направляется, воспользуйтесь этой возможностью, чтобы назвать файл по своему усмотрению. Если вы имеете дело с учетной записью пользователя, получить имя пользователя, идентификатор, отчество и т. Д. И использовать их для установки имени файла должно быть несложно.

person Surreal Dreams    schedule 19.04.2012
comment
хорошо, но как отправить $ user_id со страницы загрузки в файл, который обрабатывает загрузку изображения? - person m3tsys; 19.04.2012
comment
Отправьте его как параметр при вызове файла, обрабатывающего загрузку, или сохраните его в $ _SESSION. Или отправьте имя пользователя или любое другое имя, которое вы действительно хотите использовать для имени файла. - person Surreal Dreams; 19.04.2012

Этот сценарий получает загруженный файл и сохраняет его как /avatars/$user_id.ext, $user_id, полученный из POST:

<?php
if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
} else {
    move_uploaded_file($_FILES["file"]["tmp_name"], "/avatar/{$_POST['user_id']}.ext");
    echo "Stored in: " . "/avatar/{$_POST['user_id']}.ext";

}    
?>

А это форма:

<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="hidden" name="user_id" value="<?php echo $user_id ?>">
<input type="submit" value="submit"></form>
person Marco Gamba    schedule 19.04.2012
comment
Если бы я знал кого-нибудь еще $user_id, я мог бы сменить его аватар. - person Mike B; 19.04.2012
comment
Да, это верно, но я предполагаю, что у него уже есть базовая система авторизации, он мог бы просто добавить несколько условий в мой код (например, $_COOKIE['user'] == $dbrow['user'] && $_COOKIE['hashpwd'] == $dbrow['pwd'] && $_POST['userid'] == $dbrow['userid']) .. Ммм, это действительно сделало бы $user_id бесполезным. Но я просто опубликовал пример того, как этого можно достичь, я был уверен, что он реализовал бы это вместе с другим кодом авторизации. - person Marco Gamba; 19.04.2012