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服务的其他选项。

Xamarin.forms image to rest api

看起来您需要传递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);
}