Загрузить изображение и извлечь имя файла вместо пути к файлу - PullRequest
0 голосов
/ 09 января 2019

Я использую следующий код для загрузки эскиза в «хранилище / приложение / общедоступный / веб-сайты»

 $path = $request->file('thumbnail')->store('public/websites');

Он работает нормально и загружает изображения в каталог "вебсайтов", но проблема в том, что он возвращает фактический путь, например сайты / r63mAKN1kil3BIwvwwRevOv93MgWQFme39BwH8ZV.jpeg

Я хочу сохранить только имя изображения, например, r63mAKN1kil3BIwvwwRevOv93MgWQFme39BwH8ZV.jpeg в таблице базы данных.

По умолчанию Laravel генерирует уникальный идентификатор для имени изображения. Есть ли способ вернуть только имя файла вместо пути?

Ответы [ 4 ]

0 голосов
/ 10 января 2019
$info = pathinfo( $url );

$contents = ( new \GuzzleHttp\Client() )->get( $url, [ 'verify' => true ] )->getBody()->getContents();
$file = str_finish(sys_get_temp_dir(), '/') . $info[ 'basename' ];

\File::put( $file, $contents );

$ext = ( new UploadedFile( $file, $info[ 'basename' ] ) )->guessExtension();
0 голосов
/ 09 января 2019

Это хеш-имя, поэтому, во-первых, я думаю, вам нужно разделить ваши шаги.

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

$path = $file->store('public/websites');

когда вам нужно добавить имя файла, вы можете использовать $file->hashName();

0 голосов
/ 09 января 2019

Это то, что вам нужно

$extension = $request->image->getClientOriginalExtension();
$image_name = str_replace(' ', '', trim($request->model) . time() . "." . $extension);

и для перемещения изображения в нужную папку используйте:

  $image_path = $request->image->move(public_path('images'), $image_name);
0 голосов
/ 09 января 2019

Вы можете использовать функцию basename

http://php.net/manual/en/function.basename.php

$filename = basename($path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...