【问题标题】:Xamarin [RestSharp] + [Xam.Plugin.Media] upload model containing imageXamarin [RestSharp] + [Xam.Plugin.Media] 上传包含图像的模型
【发布时间】:2018-05-18 02:48:52
【问题描述】:

我正在尝试从 xamarin.forms 上传图片并使用 restsharp 进行 api 服务。

RestRequest uploadPostRestRequest = new RestRequest("post/create/", Method.POST);
uploadPostRestRequest.AddJsonBody(uploadPostRequest);

这是我的模特UploadPostRequest

public class UploadPostRequest
{
    public string content;
    public byte[] image;
}

问题 - 将图像类型设置为byte[] 是否正确? 服务器会接受这个还是 restsharp 管理它?

如果 RestSharp 对此有很好的控制,我可以把 MediaFileXam.Plugin.Media 放在一起,这样我就可以直接上传了吗?

Xam.Plugin.Media 用于从移动设备中挑选图像。

选择太多,所以,这就是我寻找好的建议的原因。

以前有没有人遇到过同样的问题?请帮忙。

有关其他信息,我无法使用 System.IO.File,Xamarin.Forms 不允许我使用它。

【问题讨论】:

  • Restharp 不会理解 MediaFile 是什么,但您可以从该对象中获取 bytes[] 并将其作为请求负载的一部分发布。
  • 在 PCL 中不能使用 System.IO.File~ 像 File.ReadAll() 等。转换为 byte[] 或新方法的任何其他选项?

标签: xamarin xamarin.forms restsharp


【解决方案1】:

当 Xam.Plugin.Media 完成从相机或库中加载媒体时,它会返回一个 MediaFile。该对象可以转换为字节数组,如下所示:

byte[] byteArray;
using (var memoryStream = new MemoryStream ())
{
    mediaFile.GetStream ().CopyTo (memoryStream);
    mediaFile.Dispose ();
    byteArray = memoryStream.ToArray ();
}

现在您有了字节数组,只需将其传递给将图像上传到后端的方法。

【讨论】:

  • 好吧...我收到此错误。>>
  • 这意味着您需要在处理它之前访问它。更新了显示您从媒体插件获取对象的代码的帖子
  • >> 这是我的完整代码,在尝试访问之前似乎没有被处理掉。我在某个地方错了吗??
  • 在将 mediaFile 对象转换为字节数组后,您是否尝试在任何地方使用它?如果是这样,请删除 mediaFile.Dispose (); 调用。
  • 我删除了那行,仍然得到完全相同的错误。我的代码是一样的,只是删除了那行。
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2020-07-09
  • 1970-01-01
相关资源
最近更新 更多