0
votes

Consommez et désérialisez le blazor de filtreamResult

J'ai un point de terminaison du contrôleur qui sert des fichiers comme suit; xxx

ceci fonctionne bien lorsque vous réglez sur src sur un IMG Tag et peut confirmer que les fichiers sont envoyés avec succès.

Je veux consommer le résultat dans un blazor rasoir page. Je désérialise l'appel en utilisant xxx

Cependant, lorsque je désérialise un objet (code> (avec jsonconvert.deserializeObject (responsable) < / Code>)

Une erreur est lancée sans ex.Message lorsque je déboguise et essayé d'évaluer dans la fenêtre de montre, je reçois

'Caractère inattendu rencontré lors de l'analyse de la valeur:%. Chemin '', ligne 0, position 0. '

Le retour dans cette situation est un fichier PDF. Quelqu'un peut-il me diriger de l'endroit où je vais mal s'il vous plaît?


0 commentaires

3 Réponses :


0
votes

Ah, soulignant l'évidence, mais vous nous dites déjà que waht est faux:

Le retour dans cette situation est un fichier PDF.

Voir, un fichier PDF n'est pas JSON.

Vous essayez de désérialiser un fichier PDF avec un convertisseur JSON:

var résultat = jsonconvert.deserializeObject (responsable);

Je ne suis pas sûr où vous êtes uget l'idée que cela devrait fonctionner. PDF n'est pas JSON. Heck, Evn "LIFTASSTRAINGASYNC ()" peut ne pas avoir de sens - IAM N'a pas même sûr que PDF est totalement asynchronisé. Ce n'est certainement pas JSON.


2 commentaires

Merci pour ça, inquiétiquement, elle ne m'a jamais eue. Comment devrais-je désérialiser le filestreamResult à un objet ou même octet [] alors s'il vous plaît?


Commencez avec la documentation. Je veux dire, vous avez trouvé lectures - il devrait être trivial pour passer à travers toutes les méthodes d'extension pour trouver celui qui lisait un flux en tant que tableau d'octet. Le contenu est un flux. Stream to Byte Array - Vous me demandez de manière bascielle de lire la documentation pour vous. Ne faisant jamais ça.



3
votes

Comme TomTom mentionné, vous ne pouvez pas convertir un PDF en JSON, PDF n'est pas comme un texte ou un fichier JSON.

SO dans Blazor, vous devrez faire de la manière suivante. P>

Lorsque vous récupérez le résultat de votre point final, ce sera un flux. Donc, vous pouvez faire ce qui suit pour obtenir le Stream du point final : p> xxx pré>

Après avoir obtenu le flux de fichiers, vous devrez Convertissez-le en octet : p> xxx pré>

une fois que vous l'avez dans Byte Array, c'est maintenant au format de tableau que nous Peut maintenant l'utiliser et le télécharger via le navigateur des utilisateurs. Vous devrez créer les JS suivants pour déclencher le téléchargement du navigateur dans Blazor P>

Nous créons essentiellement une ancre dans le DOM HTML et déclenchant un événement de clic ( Source ): P>

await JsRunTime.InvokeAsync<object>("saveAsFile", fileStream.Filename,
    Convert.ToBase64String(bytes));


0 commentaires

0
votes

Semblable à Réponse de Umair , au lieu de créer une nouvelle filtream et une nouvelle mémoire Morthstream, vous pouvez simplement faire cela: < Pré> xxx

suivez toujours l'exemple Umair Exemple de Code de déclenchement JS Blazor appelant Savisterfileas et Invokeasync.


0 commentaires