Como obter dados do BlazorInputfile
Oct 28 2020
Eu uso BlazorInputFile no meu projeto, mas não sei como transformar o fluxo que recebo do arquivo de entrada (um zipFile) em um ZipArchive para fazer um loop nele ....
vejo que o fluxo está ok, mas quando tento fazer um copytoasync para um fluxo de memória, ele não funciona, dizendo que a variável não está disponível.
Então eu tento esperar antes do copytoasync com uma tarefa async em vez da minha função void loadFile, e eu vi agora o ms disponível, mas está vazio, o tamanho é 0 ... parece que nada aconteceu no 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...
}
}
}
Respostas
mohammadmahdiTalachi Nov 04 2020 at 20:48
Eu tive esse problema também . Você pode obter os bytes do arquivo e enviá-los para a sua API e criar o arquivo novamente lá.
em seu componente
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();
}
}
em sua api
//file.content is aray of byte
using var memoryStream = new MemoryStream(file.Content);
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?