【发布时间】:2017-08-06 10:28:18
【问题描述】:
我正在使用 Xamarin Forms 开发移动应用程序,其中在应用程序中将图像发送到服务器。对于发送图像,我们使用了 WCF 服务。
下面是 Xamarin 应用程序的代码
using (var memoryStream = new MemoryStream())
{
pick.GetStream().CopyTo(memoryStream);
pick.Dispose();
byte[] byteImageArray = memoryStream.ToArray();
try
{
var imageStream = new ByteArrayContent(byteImageArray);
var multi = new MultipartContent();
multi.Add(imageStream);
var client = new HttpClient();
var result = client.PostAsync("http://www.test.com/Services/Service.svc/SaveImage", multi).Result;
var json = await result.Content.ReadAsStringAsync();
var strNo = JsonConvert.DeserializeObject<string>(json);
}
catch (Exception ex)
{
await DisplayAlert("Error", ex.Message, "Ok");
}
}
对于 WCF 服务
public string SaveImage(Stream data)
{
byte[] byteImage = ReadFully(data);
//Database logic to insert byte array
}
public static byte[] ReadFully(Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}
现在,此代码图像已成功转换并存储在数据库 blob 中。 我面临的问题是,每当我将 blob 转换回图像时,图像就会损坏。当我使用 asp.net 应用程序将图像插入 blob 时,blob 的数据长度显示为 18901,而使用移动应用程序数据长度插入相同图像时为 18987。 请帮我解决数据长度问题,或者请指导使用 WCF 和 Xamarin 表单将图像存储到数据库中的更简单方法。
【问题讨论】:
-
你能用
WebAPI吗?如果是,我有办法。 -
@Enrico:是的,有可能。请指导
标签: c# wcf xamarin xamarin.forms