Как сделать уникальное имя для изображения во время загрузки в laravel?

Я использую laravel 5.5 и загружаю изображение. Мой код неправильно генерирует имя.

 $image_icon = $request->file('image_icon');
 $data['image'] = $image_icon->getClientOriginalName().'.'.time();
 $destinationPath = public_path('/images');
 $image_icon->move($destinationPath, $data['image']);

Выходное имя изображения: heart.png.1544074437

Название должно быть: heart1544074437.png

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
3 101
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

попробуйте это, используя функцию pathinfo

извлечь имя файла ..

$fileName = pathinfo($image_icon->getClientOriginalName(), PATHINFO_FILENAME);

расширение извлечения

$extension = pathinfo($image_icon->getClientOriginalName(), PATHINFO_EXTENSION);

создать новое имя файла.

$fullFileName = $fileName."-".time().$image_icon->getClientOriginalExtension();

для получения дополнительной информации см. этот вопрос

Используйте pathinfo()

pathinfo — Returns information about a file path

path The path to be parsed.

options If present, specifies a specific element to be returned; one of PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION or PATHINFO_FILENAME.

If options is not specified, returns all available elements.

$image_icon = $request->file('image_icon')->getClientOriginalName();

$filename = pathinfo($image_icon, PATHINFO_FILENAME);
$extension = pathinfo($image_icon, PATHINFO_EXTENSION);
$data['image'] = $filename.time().'.'.$extension;

Вы можете сделать это:

$image = explode(".", $image_icon);
$image_name = $image[0];
$image_extension = array_slice($image , -1, 1);

$data['image'] = $image_name.time().'.'.$image_extension[0];

Надеюсь, это будет полезным и простым решением вашей проблемы. Спасибо

попробуй это

 $imgName = md5(str_random(30).time().'_'.$request->file('image_icon')).'.'.$request->file('image_icon')->getClientOriginalExtension();

Приведенный выше код требует незначительных улучшений, а именно:

$image_icon = $request->file('image_icon');

$fileName = pathinfo($image_icon->getClientOriginalName(), PATHINFO_FILENAME);

$extension = pathinfo($image_icon->getClientOriginalName(), PATHINFO_EXTENSION);

$data['image'] = $image_icon->getClientOriginalName().time().'.'.$extension;

Я не тестировал этот фрагмент кода, но он должен работать.

Вы также можете использовать готовое решение laravel для загрузки:

$request->photo->store('images');

Подробнее см. Здесь: https://laravel.com/docs/5.5/requests#files

Приведенный ниже код отлично работает для меня.

// extract file name ..

        $fileName = pathinfo($fileupload_dt->getClientOriginalName(), PATHINFO_FILENAME);
        
        // extract extenstion

        $extension = pathinfo($fileupload_dt->getClientOriginalName(), PATHINFO_EXTENSION);
        
        // create new file name.

        $imageName = $fileName."-".time().".".$fileupload_dt->getClientOriginalExtension();

        $uploadPath = 'public/ArchiveImg/img';
        $fileupload_dt->move($uploadPath,$imageName);
        $imageUrl = $uploadPath.$imageName;

Другие вопросы по теме