我尝试将Xamarin Forms中的图像发送到Rest WebApi,但没有成功。我正在使用Montemagno的CrossMedia插件。我通过以下方式将MediaFile转换为base64String:
if (photo != null)
{
var stream = photo.GetStream();
var bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
string imageBase64 = Convert.ToBase64String(bytes);
Task<string> sendFotoResult = restClient.SendImage(imageBase64);
string result = await sendFotoResult;
if( ... )
}
这是我的SendImage函数:
public async Task<string> SendImage(string foto)
{
try
{
// METHOD 1
var content = JsonConvert.SerializeObject(foto);
string url = "http://myaddress/myWS/api/Home/SendImage?foto="+ content;
var response = await _client.PostAsync(url, new StringContent(content, Encoding.UTF8, "application/json"));
return response.ReasonPhrase.ToString();
//METHOD 2
var content = JsonConvert.SerializeObject(foto);
string url = "http://myaddress/myWS/api/Home/SendImage?foto="+ content;
var result = await _client.PostAsync(url, new StringContent(content, Encoding.UTF8, "application/json"));
return result.ToString();
}catch (Exception ex)
{
return ex.Message;
}
}
方法1显示空参数错误,方法2获取URL过长错误。
我该如何解决这个问题?将图像转换为base64字符串是发送它的最佳方式吗?
非常感谢。