Как я могу использовать изображение SVG из Google Cloud Storage?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу использовать изображение SVG из Google Cloud Storage?

Сообщение Anonymous »

Сейчас я работаю над тем, чтобы разрешить загрузку изображений пользователей на мой сайт с помощью Google Cloud Storage. Загрузка обычных файлов изображений, таких как jpg, png, gif и webp, работает нормально. Однако изображения SVG не работают. Они загружаются нормально, но когда мой код PHP отображает URL-адрес в качестве источника изображения, все браузеры просто отображают значок отсутствующего изображения. Однако на вкладке сети инспектора кода создается впечатление, что изображение загружается. Мало того, вставка ссылки в отдельную вкладку приводит к загрузке файла. Это заставляет меня думать, что сервер говорит браузеру загрузить файл, а не использовать его в качестве изображения. Вот код, который я использую:

include 'GDS/GDS.php';
//create datastore
$obj_store = new GDS\Store('HomeImages');
$bucket = CloudStorageTools::getDefaultGoogleStorageBucketName();
$root_path = 'gs://' . $bucket . '/' . $_SERVER["REQUEST_ID_HASH"] . '/';

$public_urls = [];
//loop through all files that are images
foreach($_FILES['images']['name'] as $idx => $name) {
if ($_FILES['images']['type'][$idx] === 'image/jpeg' || $_FILES['images']['type'][$idx] === 'image/png' || $_FILES['images']['type'][$idx] === 'image/gif' || $_FILES['images']['type'][$idx] === 'image/webp' || $_FILES['images']['type'][$idx] === 'image/svg+xml') {
//path where the file should be moved to
$original = $root_path . 'original/' . $name;
//move the file
move_uploaded_file($_FILES['images']['tmp_name'][$idx], $original);

//don't use the getImageServingUrl function on SVG files because they aren't really images
if($_FILES['images']['type'][$idx] === 'image/svg+xml')
$public_urls[] = [
'name' => $name,
'original' => CloudStorageTools::getPublicUrl($original, true),
'thumb' => CloudStorageTools::getPublicUrl($original, true),
'location' => $original
];
else
$public_urls[] = [
'name' => $name,
'original' => CloudStorageTools::getImageServingUrl($original, ['size' => 1263, 'secure_url' => true]),
'thumb' => CloudStorageTools::getImageServingUrl($original, ['size' => 150, 'secure_url' => true]),
'location' => $original
];
}
}
//store image location and name in the datastore
foreach($public_urls as $urls){
$image = new GDS\Entity();
$image->URL = $urls['original'];
$image->thumbURL = $urls['thumb'];
$image->name = $urls['name'];
$image->location = $urls['location'];
$obj_store->upsert($image);
}
//redirect back to the admin page
header('Location: /admin/homeimages');


Подробнее здесь: https://stackoverflow.com/questions/370 ... ud-storage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»