如何在C#中将Android.Net.Uri转换为字节数组

时间:2018-05-10 06:55:56

标签: android xamarin xamarin.android

在我使用Xamarin.Android的移动应用程序中,我实现了文件附件功能。在那里,我从

获取了Android.Net.Uri中的文件内容
protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
  base.OnActivityResult(requestCode, resultCode, data);
  Android.Net.Uri attachmentUri = data.Data;
}

现在,为了将文件作为多部分消息上传,我必须将此uri转换为字节数组。我搜索了很多但是Java中的所有东西。我在C#中需要这样的代码。

1 个答案:

答案 0 :(得分:2)

您可以使用ContentResolver.OpenInputStream上的Android.Net.Uri来检索您可以使用StreamContent将其转换为ByteArrayContent对象的流并将其应用于您的MultipartFormDataContent {1}}。

实施例

using (var resolverStream = ContentResolver.OpenInputStream(data.Data))
using (var streamContent = new StreamContent(resolverStream))
using (var byteArrayContent = new ByteArrayContent(await streamContent.ReadAsByteArrayAsync()))
using (var formDataContent = new MultipartFormDataContent())
{
    formDataContent.Add(byteArrayContent, "file", "DummyFileName");

    // rest of the header setup, PostAsync, etc..

}