BlazorInputfile'dan veri nasıl alınır

Oct 28 2020

i kullanmak BlazorInputFile içinde döngü bir ziparchive i girdi dosyası (sıkıştırılmış bir dosya) aldığım o akışı nasıl dönüştürüleceği do not biliyorum .... Projemde ama üzerinde

Akışın iyi olduğunu görüyorum, ancak bir memorystream'e copytoasync yapmaya çalıştığımda, değişkenin kullanılamadığını söyleyerek çalışmıyor.

Bu yüzden, void işlevim loadFile yerine eşzamansız bir görevle copytoasync için bir bekleme ile deniyorum ve şimdi mevcut ms'yi gördüm, ancak boş, boyutu 0 ... copytoasync'de hiçbir şey olmadı gibi görünüyor ...

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...
                    }
            }            
        }

Yanıtlar

mohammadmahdiTalachi Nov 04 2020 at 20:48

Ben de bu problemi yaşadım. Dosya baytları alabilir ve bunu Api'nize gönderebilir, ardından orada yeniden dosya oluşturabilirsiniz.

senin bileşeninde

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'nizde

//file.content is aray of byte

using var memoryStream = new MemoryStream(file.Content);