【问题标题】:Xamarin.forms image to rest apiXamarin.forms 图像休息 api
【发布时间】:2016-07-29 19:21:36
【问题描述】:

在 Xamarin.Forms 中,我将我的图像发送到休息 Api,而在添加图像中没有根据需要进行转换,获取和错误无法将 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.Forms 从相机拍摄的图像,请帮我解决这个问题,或者让我知道将图像发送到 Rest web 服务的替代选项。

【问题讨论】:

    标签: c# rest xamarin.forms


    【解决方案1】:

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

    【讨论】:

    • 嗨,感谢您对此的帮助,我按照建议使用上述内容,我收到错误“无法将 Xamarin.forms.image 转换为字节 []”,有关如何更正的任何建议这个?
    • 你能发布更多代码吗?知道 image1 来自哪里会很有帮助......我刚刚更新了答案可能会有所帮助
    • public imageRest(Image image) { this.image = image; //image.Source = "/Assets/Image1.png"; MemoryStream 流 = 新的 MemoryStream();完全读取(流); }
    • 图像是一个 Xamarin.forms.image 我想发送到 Rest api
    • 是的,你为什么不在这里问这个问题呢?我们会帮助你,但这是另一个(好)问题。请务必先检查此资源:Convert Forms Image to byte arrayConvert Image into byte array in Xamarin.Forms
    【解决方案2】:

    我理解这个疑问,但我相信有更好的方法来做到这一点。使用 Firebase 存储并写入您的数据库,只有图片 URL 保存在 Firebase 中。

    像这样:

    >

    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);
    }
    

    【讨论】:

    • 如果对您有帮助,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多