Я использую пакет Embed для захвата метаданных внешних ссылок. Затем я использую пакет Intervention Image, чтобы управлять изображением по умолчанию ссылки и сохранять его на диске.Вмешательство Изображение: Формат кодирования (png? V = 73d79a89bded & a) не поддерживается
Все работает хорошо, пока я не попытаюсь отправить ссылку на вопрос StackOverflow
. Тогда я получаю эту ошибку :
NotSupportedException в AbstractEncoder.php строке 149: (? V = PNG 73d79a89bded & а)
формат кодирования не поддерживается.
в AbstractEncoder.php линии 149
в AbstractEncoder-> процесса (объекта (изображения), 'PNG? V = 73d79a89bded & а', NULL)> в строке 77 AbstractDriver.php
на AbstractDriver -> закодировать (объект (изображение)? v = PNG 73d79a89bded & а ', NULL) в> image.php линии 119
в Image-> закодировать (? v = PNG 73d79a89bded & а', нуль) в строке Image.php 139
в Image-> Save ('C: \ XAMPP \ HTDOCS \ r2 \ PUBLIC/изображений/rwSuGpEB.png V = 73d79a89bded & а') в PostsController.php линии 70
Как справиться с этим в Laravel
и пакет вмешательства?
Как вы удаляете ?v=73d79a89bded&a
от basename()
?
Это create()
метод PostsController
public function store(PostRequest $request)
{
if (Input::has('link')) {
$input['link'] = Input::get('link');
$info = Embed::create($input['link']);
if ($info->image == null) {
$embed_data = ['text' => $info->description];
} else if ($info->description == null) {
$embed_data = ['text' => ''];
} else {
$extension = pathinfo($info->image, PATHINFO_EXTENSION);
$newName = public_path() . '/images/' . str_random(8) . ".{$extension}";
if (File::exists($newName)) {
$imageToken = substr(sha1(mt_rand()), 0, 5);
$newName = public_path() . '/images/' . str_random(8) . '-' . $imageToken . ".{$extension}";
}
// This is line 70
$image = Image::make($info->image)->fit(70, 70)->save($newName);
$embed_data = ['text' => $info->description, 'image' => basename($newName)];
}
Auth::user()->posts()->create(array_merge($request->all(), $embed_data));
return redirect('/subreddit');
}
Auth::user()->posts()->create($request->all());
return redirect('/subreddit');
}
Я не хочу быть грубым, но я уже знал это. Вопрос в том, как я могу его удалить? Я могу использовать 'basename()', чтобы получить имя файла + расширение. – Halnex
Извините, это было непонятно из исходной версии вашего вопроса. В этом случае вы могли бы значительно сократить его. См. Мой обновленный ответ. –
Да, я прошу прощения за это. После этого я обновил свой вопрос.И спасибо, что это решило. – Halnex