Как отправить объект 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.