首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin.forms镜像到rest api

Xamarin.forms镜像到rest api
EN

Stack Overflow用户
提问于 2016-07-30 03:21:37
回答 2查看 2.1K关注 0票数 0

在Xamarin.Forms中,我正在发送我的图像到rest Api,而在Add中,图像没有按照需要进行转换,获取和错误无法将system.net.http.streamcontent转换为byte[]

代码语言:javascript
运行
复制
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服务的替代方案。

EN

回答 2

Stack Overflow用户

发布于 2016-07-30 04:52:54

看起来您需要传递一个byte[]而不是一个StreamContent。试试这个:

代码语言:javascript
运行
复制
var client = new HttpClient();
var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new MemoryStream(image1).ToArray()), "bilddatei", "upload.jpg");

更新:如果你将图片保存在设备的存储器上,你可以像这样发送它:

代码语言:javascript
运行
复制
var client = new HttpClient();
var form = new MultipartFormDataContent();
var path = "path/to/file";
form.Add(new ByteArrayContent(File.ReadAllBytes(path)), "bilddatei", "upload.jpg");
票数 0
EN

Stack Overflow用户

发布于 2020-06-09 04:18:03

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

如下所示:

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38666123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档