Xamarin.forms image to rest api
本文关键字:rest api to image forms Xamarin | 更新日期: 2023-09-27 17:59:12
在Xamarin.Forms中,我将我的图像发送到rest Api,而在Add中,图像没有根据需要进行转换,getting and error无法将system.net.http.streamcontent转换为byte[]
HttpClient client = new HttpClient();
MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new StreamContent(new MemoryStream(image1)), "bilddatei", "upload.jpg"));
在提到的代码中,image1是使用Xamarin从相机拍摄的图像。表单,请帮助我解决这个问题,或者让我知道将图像发送到Rest web服务的其他选项。
看起来您需要传递byte[]
而不是StreamContent
。试试这个:
var client = new HttpClient();
var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new MemoryStream(image1).ToArray()), "bilddatei", "upload.jpg");
更新:如果您将图片保存在设备的存储中,您可以像以下方式发送:
var client = new HttpClient();
var form = new MultipartFormDataContent();
var path = "path/to/file";
form.Add(new ByteArrayContent(File.ReadAllBytes(path)), "bilddatei", "upload.jpg");
我理解这种怀疑,但我相信有更好的方法可以做到这一点。使用Firebase存储并写入数据库时,只有保存在Firebase中的图像URL。
像这样:
>
using (var ms = new MemoryStream(file.ByteFile))
{
ms.Seek(0, SeekOrigin.Begin);
var task = new FirebaseStorage(
"your.adress.firebase.com",
new FirebaseStorageOptions()
{
HttpClientTimeout = new TimeSpan(0, 30, 0)
})
.Child("Files")
.Child($"{file.id}.mp4")
.PutAsync(ms);
file.LinkVideo = await task;
Entity entity = new Entity()
{
Name = file.Name,
LinkVideo = file.LinkVideo,
};
//Your API
return await PostEntity(contest);
}