如何解决如何从BlazorInputfile获取数据
我在项目上使用BlazorInputFile,但不知道如何将我从输入文件(一个zipFile)中获得的流转换为ZipArchive以在其中循环....
我看到流没有问题,但是当我尝试将copytoasync同步到memorystream时,它不起作用,告诉我变量不可用。
所以我尝试使用异步任务而不是我的void函数loadFile来等待copytoasync,现在我看到了ms可用,但它的空大小为0 ...在copytoasync中似乎什么也没发生...
private async Task loadFileAsync(IFileListEntry fileZip,ExcelWorksheet sheet2User)
{
MemoryStream mstest = new MemoryStream();
await fileZip.Data.CopyToAsync(mstest);
mstest.Position = 0;
using (ZipArchive archive = new ZipArchive(mstest,ZipArchiveMode.Update))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
//my code...
}
}
}
解决方法
我也有这个问题。 您可以获取文件字节并将其发送到Api,然后在此处再次创建文件。
在您的组件中
public byte[] FileContent { get; set; }
protected async Task HandleAnswerFileSelected(IFileListEntry[] files)
{
foreach (var file in files)
{
FileContent = await FIleSender(file),}
}
public async Task<byte[]> FIleSender(IFileListEntry file)
{
using (var ms = new MemoryStream())
{
await file.Data.CopyToAsync(ms);
return ms.ToArray();
}
}
在您的api中
//file.content is aray of byte
using var memoryStream = new MemoryStream(file.Content);
,
我找到了解决方案并使其像这样工作,将其转换为base64string并将其写入新的ms! 也许它会有所帮助。
'''
private void LoadFile(MemoryStream msFromBlazorInputFile)
{
MemoryStream memoryfilestream = new MemoryStream(0);
memoryfilestream.Write(Convert.FromBase64String(Convert.ToBase64String(msFromBlazorInputFile.ToArray())));
using (ZipArchive archive = new ZipArchive(memoryfilestream,ZipArchiveMode.Update))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
}
}
}
'''
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。