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