gpt4 book ai didi

c# - Xamarin MVVM 处理文件

转载 作者:行者123 更新时间:2023-12-03 10:43:47 25 4
gpt4 key购买 nike

我正在使用 Xamarin 和 MVVM 为 iOS 和 Android 开发应用程序。应用程序应该上传\下载文件到\从服务器。详细地说,Android 上有一个按钮,点击它 Android 文件选择器打开,我正在获取文件。在 iOS 中也是如此。问题是我试图将文件作为 Stream 发送到 viewmodel,但在 Android 中它是 Android.Runtime.InputStreamInvoker在 iOS 中为 NSData .是否有任何通用方法可以将文件流发送到 View 模型或任何转换?并且转换到流不起作用,当我发送它不是 View 模型时,我无法从流中获取任何信息。也许有人有这样的问题。

例如,在 Android 接收文件上:

public override void OnActivityResult(int requestCode, int resultCode, Intent intent)
{
base.OnActivityResult(requestCode, resultCode, intent);
if (resultCode == (int)Result.Ok)
{
var returnUri = intent.Data;
var mimeType = _baseActivity.ContentResolver.GetType(returnUri);
var returnCursor =
_baseActivity.ContentResolver.Query(returnUri, null, null, null, null);
int nameIndex = returnCursor.GetColumnIndex(OpenableColumns.DisplayName);
int sizeIndex = returnCursor.GetColumnIndex(OpenableColumns.Size);
returnCursor.MoveToFirst();
var name = returnCursor.GetString(nameIndex);
var size = returnCursor.GetLong(sizeIndex);

var inputStream = (Android.Runtime.InputStreamInvoker) _baseActivity.ContentResolver.OpenInputStream(returnUri);
var count = inputStream.BaseInputStream.Available();

//then I want to send inputStrea here what to do next??
}
}

我知道我可以读取整个文件并将其复制到例如 MemoryStream并发送,但它很慢而且不好,我正在寻找一种不复制的方法。

最佳答案

有时在这种情况下,我只需将属性键入为 System.Object .绑定(bind)系统在运行时使用反射来访问属性,因此您的属性使用什么具体类型并不重要。

这假设任何连接到您的 View 模型的东西都可以在该平台上获得 NSData(在 iOS 上时)或 Android 等价物。

关于c# - Xamarin MVVM 处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com