Отправка файлов в Cloudinary с помощью ASP.NET Core

Я пытаюсь загрузить файлы (а точнее изображения) в Cloudinary. В документации Cloudinary для .NET (Documentation) сказано, что файлы следует загружать следующим образом:

var uploadParams = new ImageUploadParams()
{
    File = new FileDescription(@"c:\sample.jpg")
};
var uploadResult = cloudinary.Upload(uploadParams);

В общем, мне нужен путь к файлу для загрузки изображения. Когда я жестко запрограммировал путь, он работает, но я хочу, чтобы пользователь мог выбирать свои собственные файлы, очевидно. Единственный способ получить файлы, которые я нашел, - это использовать IFormFile, но единственный способ загрузить файл с его помощью - это сначала загрузить его на сервер, а затем получить путь к загруженному файлу и перенаправить его в Cloaudinary, но там должен быть лучший способ.

Итак, как я могу позволить пользователю загружать файлы в Cloudinary с помощью ASP.NET Core?


person Zvonimir Matic    schedule 13.03.2017    source источник
comment
см. раздел Загрузка файлов в ASP.NET Основная документация   -  person Set    schedule 13.03.2017
comment
См. Это руководство techcerberus.blogspot. com.ng/2017/10/ public ImageUploadResult UploadImage(HttpPostedFileBase file) { if (file != null) { var uploadParams = new ImageUploadParams { File = new FileDescription(file.FileName, file.InputStream), Transformation = new Transformation().Width(200).Height(200).Crop("thumb").Gravity("face") }; var uploadResult = _cloudinary.Upload(uploadParams); return uploadResult; } return null; }   -  person cerberus    schedule 06.10.2017


Ответы (2)


По сути, Cloudinary позволяет загружать файлы из путей или из потоков.

Для пути к файлу:

var uploadParams = new ImageUploadParams()
        {
            File = new FileDescription(@"c:\sample.jpg")
        };
        var uploadResult = cloudinary.Upload(uploadParams);

Для потока:

HttpPostedFile file = fileInput.PostedFile;
var uploadParams = new ImageUploadParams()
{
    File = new FileDescription(file.FileName, file.InputStream),
};
var uploadResult = cloudinary.Upload(uploadParams);

Этот второй метод позволяет вам даже публиковать содержимое изображения byte [] или строку Base64, содержащую данные изображения, которые вы можете легко преобразовать в Stream для загрузки.

//data is a byte[]
    Stream stream = new MemoryStream(data);
            var cloudinary = Connect();
            var uploadParams = new ImageUploadParams()
            {
                File = new FileDescription(GetGuid.Short(), stream),
                PublicId = GetGuid.Short()
            };
            var uploadResult = cloudinary.Upload(uploadParams);
            return uploadResult.SecureUri.AbsoluteUri;
person Olorunfemi Ajibulu    schedule 23.04.2018
comment
У меня очень похожая проблема. В моем случае я получаю свой файл из компонента InputFile Blazor, и всякий раз, когда я пытаюсь использовать метод загрузки, я получаю исключение System.Threading.CancellationToken - person Tito; 01.01.2021
comment
@Tito, вы передаете методу токен отмены? - person Olorunfemi Ajibulu; 28.02.2021

Вам не нужно загружать изображение на сервер.

Вы не можете отправлять их напрямую с клиента в облачную среду.

Проверьте их документацию, как добиться этого с помощью JQuery.

person Ygalbel    schedule 14.03.2017