Как загрузить изображение из хранилища (MinIO) с помощью GetObjectAsync()?C#

Место общения программистов C#
Ответить
Anonymous
 Как загрузить изображение из хранилища (MinIO) с помощью GetObjectAsync()?

Сообщение Anonymous »

я пытаюсь загрузить изображение из своего хранилища MinIO, все соединения работают правильно, но я новичок в C# и не понимаю, как это сделать.
Это изображение будет напечатано в HTML, поэтому я не хочу загружать его или что-то еще, просто распечатываю на экране.
Как вы видите, я получаю объект с помощью метода GetObjectArgs(), точно так же, как они Документы.

Код: Выделить всё

GetObjectArgs getObjectArgs = new GetObjectArgs()
.WithBucket(myBucket)
.WithObject(myObject)
.WithCallbackStream((stream) =>
{
stream.CopyTo(Console.OpenStandardOutput());
});

object objectData = await minio.GetObjectAsync(getObjectArgs);
Этот метод возвращает объект, поэтому, когда я печатаю это, я получаю следующий ответ:

Код: Выделить всё

{
"objectName": "mylogo.png",
"size": 18028,
"lastModified": "2023-11-28T15:27:14-03:00",
"eTag": "--SECRET--",
"contentType": "image/png",
"metaData": {
"Content-Type": "image/png"
},
"versionId": null,
"deleteMarker": false,
"extraHeaders": {
"Server": "openresty",
"Date": "Wed, 29 Nov 2023 14:11:31 GMT",
"Connection": "keep-alive",
"Accept-Ranges": "bytes",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
"Vary": "Origin",
"X-Amz-Id-2": "--SECRET--",
"X-Amz-Request-Id": "--SECRET--",
"X-Content-Type-Options": "nosniff",
"X-XSS-Protection": "1; mode=block",
"X-Served-By": "--SECRET--"
},
"taggingCount": null,
"archiveStatus": null,
"expires": null,
"replicationStatus": null,
"objectLockMode": null,
"objectLockRetainUntilDate": null,
"legalHoldEnabled": null
}

Мой вопрос: какие методы мне нужно использовать для преобразования этого объекта в изображение на моем экране?
Преобразуйте объект в Base64 и изображение после? Я действительно не знаю, до сих пор ничего не работает и ничего не нашел. Или, может быть, это вообще не имеет смысла?
Я уже пробую использовать метод PresignedUrl и создать временный URL-адрес доступа, он работает нормально, но мне кажется неправильным, потому что это будет много вызовов к этому объекту/проекту.
Посмотрите несколько примеров людей, использующих MemoryStream, поэтому попробуйте это, но я продолжаю предупреждать ResponseStream, он просто не распознает его.

Код: Выделить всё

using (var responseStream = objectData.ResponseStream)
{
var stream = new MemoryStream();
await responseStream.CopyToAsync(stream);
stream.Position = 0;
return stream;
}
Я надеялся найти что-то вроде:

Код: Выделить всё

Convert.ToImage(objectData)


Подробнее здесь: https://stackoverflow.com/questions/775 ... bjectasync
Ответить

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

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

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

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

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