首页 > 解决方案 > 如何在 C# 中将 Android.Net.Uri 转换为字节数组

问题描述

在我使用 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# 中需要这样的代码。

标签: androidxamarinxamarin.android

解决方案


您可以使用ContentResolver.OpenInputStreamonAndroid.Net.Uri检索一个流,然后您可以使用该流StreamContent将其转换为ByteArrayContent对象并将其应用于您的MultipartFormDataContent.

例子:

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..

}

推荐阅读