webassembly - DataWriter.StoreAsync() 在 WASM 上不可用
问题描述
我在WASM平台上使用我的 Uno 应用程序从我的网站下载图像时遇到问题。
它适用于 UWP。我的代码是:
StorageFile imageFile = await SelectedFolder.CreateFileAsync($"{item.picturekey}.jpg",
Overwrite ? CreationCollisionOption.ReplaceExisting : CreationCollisionOption.FailIfExists);
if (imageFile != null)
{
byte[] imageArray = await DataService.GetImage(item.picturekey, item.hiresurl);
if (imageArray != null)
{
var stream = await imageFile.OpenAsync(FileAccessMode.ReadWrite);
using (var outputStream = stream.GetOutputStreamAt(0))
{
using (DataWriter writer = new DataWriter(outputStream))
{
if (imageArray != null)
{
sb.AppendLine(this.DownloadStatus);
await writer.StoreAsync();
await outputStream.FlushAsync();
}
}
}
stream.Dispose();
}
}
当我针对 wasm 进行测试时,我收到:
fail: Windows.Storage.Streams.DataWriter[0]
The member DataWriter.DataWriter(IOutputStream outputStream) is not implemented in Uno.
我的 try-catch 给我: System.NullReferenceException: Arg_NullReferenceException at Windows.Storage.Streams.DataWriter.WriteBytes[Byte[] value) ... 第 62 行
I have checked to be sure, imageArray.Length > 0, so I am not passing in a null.
I assume that it is really supported in Uno for UWP and not WASM, is there a work-around?
Thanks, any suggestions would be helpful.
解决方案
DataWriter
目前还没有为流实现。
您应该能够使用.AsStreamForWrite()
扩展方法并StreamWriter
改用.NET 。
Uno 平台通常选择基于 .NET API 中存在的等效 API 来实现 WinRT API,这就是为什么像这样的某些部分尚不可用的原因。
推荐阅读
- node.js - 无法在数字海洋应用平台上部署带有节点后端的 React 应用
- websocket - AWS NLB + NGINX Ingress + websockets == 502 Bad Gateway or Bad Handshake
- python - 网页抓取python bs4中的属性错误
- jquery - 想在另一个视图页面显示响应短信ajax成功功能
- postman - 通过邮递员获取过去的日期创建缩放会议
- javascript - Google Drive API 有没有办法从 webContentLink 属性中获取文件 ID?
- python - Kedro 安装 - 无法卸载“终端”
- r - 使用 tidyr 的 pivot_wider 从长到宽
- flutter - Flutter:我可以通过提供者更改状态栏颜色吗?
- excel - SAS中每列分为子列时如何导入excel文件