#php #html #laravel
#php #HTML #laravel
Вопрос:
я успешно настроил свое подключение к Google диску и сохранил на нем изображение. теперь я хочу получить его в моем представлении блейда. к сожалению, я не могу поместить ответ в src
<img>
тег, потому что он возвращает само изображение, а не путь к нему.
я попытался использовать пакет изображений вмешательства, но когда я использовал этот make()
метод, я проверил его, и у него все еще не path
было атрибута, поэтому я предполагаю, что его нет, чтобы сделать это легко. могу ли я отобразить изображение без наличия path
? или как мне создать временный путь для возвращаемого изображения, если это возможно, в одной строке?
у меня есть данные изображения в этой коллекции
$storage = collect(Storage::cloud()->listContents($this->getGoogleFolderId(), false));
мои попытки собрать как можно больше информации:
dd($storage->where('name', $breakdowns->first()->image->path025)->first());
ВОЗВРАТ:
array:10 [▼
"name" => "2020-10-18-16-46-25-lq.jpg"
"type" => "file"
"path" => "1aCS7hRWQWjVwLdF_nn5NKTKJZUbRyq2M/1qTUzjvN6qQBHpGKvN1Xic4SYsVsEgskR"
"filename" => "2020-10-18-16-46-25-lq"
"extension" => "jpg"
"timestamp" => 1603032376
"mimetype" => "image/jpeg"
"size" => 59213
"dirname" => "1aCS7hRWQWjVwLdF_nn5NKTKJZUbRyq2M"
"basename" => "1qTUzjvN6qQBHpGKvN1Xic4SYsVsEgskR"
]
и это:
dd(IImage::make(Storage::disk('google')->get($storage->where('name', $breakdowns->first()->image->path025)->first()['path'])));
ВОЗВРАТ:
InterventionImageImage {#1562 ▼
#driver: InterventionImageGdDriver {#1555 ▼
decoder: InterventionImageGdDecoder {#1567 ▼
-data: null
}
encoder: InterventionImageGdEncoder {#1561 ▼
result: null
image: null
format: null
quality: null
}
}
#core: gd resource @747 ▼
size: "1079x1758"
trueColor: true
}
#backups: []
encoded: ""
mime: "image/jpeg"
dirname: null
basename: null
extension: null
filename: null
}
Комментарии:
1. Вы хотите использовать изображение прямо из Google Cloud или хотите загрузить его на свой сервер, а затем отобразить?
2. отображайте его только, если это возможно.
Ответ №1:
Вот как я бы подошел к вашей проблеме. Изображение уже должно быть того формата, который вам нужен.
Контроллер
public function getImage($path)
{
$filePath = $storage->where('name', $path)->first();
if(isset($filePath->id)) {
$disk = Storage::disk('google');
$image = $disk->get($filePath->{THE ATTRIBUTE ON THAT MODEL WHICH HAS THE GOOGLE PATH});
return response($image)->header('Content-Type', 'image/png');
}
}
Маршрут
Route::get('/dynamic-image/{path}', 'ImageController@getImage');
Блейд
<img src="/dynamic-image/{{$bd->image->path025}}">
Комментарии:
1. я попытался встроить его в blade, как это, пока не работает
<img src="{{ response(Storage::disk('google')->get($storage->where('name', $bd->image->path025)->first()['path']))->header('Content-Type', 'image/png') }}" alt="obrazok" height="50">
2. Вы не можете этого сделать, вам нужен запрос, чтобы перейти и забрать это изображение, я отредактирую свой ответ
3. вы должны иметь возможность редактировать
$storage
часть, чтобы она работала так, как вы ее используете, мой — всего лишь пример, и, конечно, переменная нигде не установлена4. я попробую это первым делом утром, чтобы я мог проверить ваш ответ как правильный. Спасибо.