Upload Datei (PDF) in Blazor Server App

  • C# (ASP)
  • (Core) Blazor Server

    Upload Datei (PDF) in Blazor Server App

    Moin,

    In meiner kleiner Blazor Server-App habe ich eine Seite, mit der ich reine ASCII-Dateien einlese, verarbeite und die Ergebnisse in eine Datenbank schreibe.

    folgenden Code verwendet ich


    HTML-Quellcode

    1. <InputFile OnChange="@OnFileChange" style="margin-left:50px" />


    C#-Quellcode

    1. private async void OnFileChange(InputFileChangeEventArgs e)
    2. {
    3. var f = e.File;
    4. var a = f.OpenReadStream(f.Size);
    5. var b = new byte[f.Size];
    6. await a.ReadAsync(b, 0, (int)f.Size);
    7. countImport = konto.Parse(Encoding.ASCII.GetString(b)).Count;
    8. await OnCommit();
    9. IsUpload = false;
    10. }



    Das klappt. Nun hatte ich vor, keine ASCII-Dateien, sondern PDF hochzuladen und verwende das gleiche Konstrukt.

    Dabei stoße ich auf Probleme, denn ​ReadAsync macht Schmuh.

    Es wird nicht die volle Datei gelesen sondern lediglich 32256 Bytes. Und das egal welche PDF-Datei ich auswähle. Da die Dateien um die 500k groß sind, kommt ein Timeout und die Ausnahme, dass nicht ausreichend Daten in der zur Verfügung stehenden Zeit gelesen wurden.

    C#-Quellcode

    1. ​var count = await a.ReadAsync(PDF);


    bringt keine Ausnahme, da ich kein konkrete Anzahl an Bytes vorgebe, gelesen werden aber dennoch nur 32256 Bytes.

    Merke ich mir in der oben gezeigten Eventroutine nur den Dateistream und lese in der Eventroutine des "Commit"-Buttons, dann werden 94k gelesen, auch nicht alles und anders als im InputFileChangeEvents.

    Kann mir einer sagen, was da schief läuft? Was ist denn da anders wenn ich ASCII-Dateien oder PDF-Dateien lesen will? Gut, die ASCII-Dateien sind deutlich kleiner, aber wenn ich bei den PDF nur die ersten 100 Bytes lesen will, dann kommt da auch ein TimeOut.

    Gruß

    MQ