Как отправить объект File в Web API, используя вызов POST в формах Xamarin.?

Мне нужно сделать POST-вызов из моего приложения xamarin форм, где мне нужно загрузить объект File, как это API-интерфейс с помощью POST Call. Есть ли способ сделать это возможным.

2 ответа

Если вы отправляете объект файла с использованием Base64 или Byte[], тогда разрешено только ограниченное количество может быть до 2-4 Мб, но если у вас изображение большего размера, чем оно не будет поддерживать.

Итак, решение - это пост-поток контента,

var file = await CrossMedia.Current.PickPhotoAsync(new PickMediaOptions
            {
                PhotoSize = PhotoSize.Full,
                CompressionQuality = 100
            });

Создать объект MediaFile, как, public MediaFile AttachedImage; и сохраните файл в нем, чтобы поток памяти не был потерян. Подобно,AttachedImage = file

Опубликовать код на API,

HttpClient httpClient = new HttpClient();
MultipartFormDataContent mt = new MultipartFormDataContent();
AttachedImage.GetStream().Position = 0;
StreamContent imagePart = new StreamContent(AttachedImage.GetStream());
imagePart.Headers.Add("Content-Type", ImageType);
mt.Add(imagePart, String.Format("file"), String.Format("bk.jpeg"));

requestMessage.Content = mt;


var response = await httpClient.PostAsync("Your URL", mt);
if (response.IsSuccessStatusCode)
{
    var responseString = await response.Content.ReadAsStringAsync();
    var objRootObjectuploadImage = JsonConvert.DeserializeObject<RootObjectuploadImage>(responseString);
    if (objRootObjectuploadImage != null)
    {

    }
    else
    {

    }
}
else
{
    Loading(ActIndicator, false);
    await DisplayAlert(res.LAlert, "webserver not responding.", res.LOk);
}

НЕТ, невозможно отправить объект файла. Вы можете отправить как json, конвертировав файл в строку Base64. Это рекомендованное проверенное решение. Эта ссылка имеет код для преобразования туда и обратно из Base64.

Другие вопросы по тегам