/
inhosin
/
ProductAPI
Обзор
Документация
Войти
/
inhosin
/
ProductAPI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ProductAPI.Service/Implementations/ImageAccessorService.cs
60 строк
2 KB
Andrej-Gorlov
Addendum image в cloudinary
01 сен 2023, 16:12
01 сен 2023, 16:12
06a1122
Код
Авторство
О чём код?
using CloudinaryDotNet.Actions; using CloudinaryDotNet; using Microsoft.Extensions.Options; using ProductAPI.Domain; namespace ProductAPI.Service.Implementations { public class ImageAccessorService : IImageAccessorService { private readonly Cloudinary _cloudinary; public ImageAccessorService(IOptions<CloudinarySettings> config) { var account = new Account( config.Value.CloudName, config.Value.ApiKey, config.Value.ApiSecret ); _cloudinary = new Cloudinary(account); } /// <summary> /// Add or Update /// </summary> /// <param name="file"></param> /// <param name="id"></param> /// <returns></returns> /// <exception cref="Exception"></exception> public async Task<ImageUpload?> AddImageAsync(IFormFile file, string? id = null) { await using var stream = file.OpenReadStream(); var uploadParams = new ImageUploadParams { File = new FileDescription(file.FileName, stream) }; if (id != null) uploadParams.PublicId = id; var uploadResult = await _cloudinary.UploadAsync(uploadParams);//.ConfigureAwait(false); if (uploadResult.Error != null) { throw new Exception(uploadResult.Error.Message); } return new ImageUpload { PublicId = uploadResult.PublicId, Url = uploadResult.SecureUrl.ToString() }; } /// <summary> /// Delete /// </summary> /// <param name="publicId"></param> /// <returns></returns> public async Task<bool> DeleteImageAsync(string publicId) { var deleteParams = new DeletionParams(publicId); var result = await _cloudinary.DestroyAsync(deleteParams);//.ConfigureAwait(false); return result.Result == "ok" ? true : false; } } }