android - 如何在 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# 中需要这样的代码。
解决方案
您可以使用ContentResolver.OpenInputStream
onAndroid.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..
}
推荐阅读
- entity-framework-core - 如何将 EF Core 工具更新到最新版本
- mongodb - 用于统计mongodb主字符串中子字符串出现次数的聚合
- javascript - 映射数组时如何始终以相同的顺序显示项目?
- database - 为什么认为数据库不同于文件系统
- python - 如何在python中实现堆栈?
- python - Conda create env from file - 如何在文件中指定前缀?
- php - PHP Carbon 切换时区偏移
- php - 从php中的多维关联数组打印值
- c# - asp.net 发布数据并获取数据
- php - 如何在php中存储变量的stdClass对象数据