IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Afficher les donnees d'un fichier txt (500 Mb et +) dans une textarea html


Sujet :

NodeJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Afficher les donnees d'un fichier txt (500 Mb et +) dans une textarea html
    Bonjour,

    Depuis quelques temps maintenant j'essaye de developper un logiciel avec Electron permettant de filtrer des donnees provenant de fichiers textes.
    J'ai donc creer une forme HTML dan laquelle j'ai insere un bouton "input" et une textarea pour display les fichiers.

    Avant de pouvoir inserer la partie filtre a proprement parle, j'aimerais deja pouvoir display le contenu entier d'un fichier texte dans ma textarea.
    Ces fichiers etant plutot imposant (en general entre 500 Mb a + de 1 Gb) j'ai donc choisi de partir sur une solution stream de node.js.

    Apres beaucoup de recherche la seule solution qui me convenait etait d'utiliser un "createReadStream" combine a une solution de pipe et l'utilisation de event-stream provenant de npm.

    Avec cette combinaison je n'ai donc aucun probleme pour lire les fichiers qu'il fasse meme 1 ou 2 Gb.

    Le probleme vient au moment ou je veut display le contenu de ces fichiers dans ma textarea. J'arrive a inserer tout le contenu au fur et a mesure mais vient un moment ou je vais subir un lag et il devient alors impossible de scroll pour lire le contenu.

    Y a t'il une solution pour pallier a ce probleme ?

    Peut-etre que l'utilisation d'une textarea ou du moins la facon dont j'insere les donnees est mauvaise ?

    je vous joint le code ci=dessous.

    Merci d'avance.

    Cordialement.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
          <input type='file' />
     
          <textarea name="data-textbox" class="display-file"></textarea>
    </body>
    </html>

    Javascript + nodeJS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    const [input, textarea] = [
          document.querySelector("input[type=file]")
        , document.querySelector(".display-file")
      ];
     
    const fs = require('fs')
    , es = require('event-stream');
    var data = []; 
     
    streamFile = function(x, y) {
     
      var returnTxt = '';
      var readStream = fs
      .createReadStream(y,  {flags: 'r'})
      .pipe(es.split(/(\r?\n)/))
      .pipe(
        es
        .map(function(line, cb){
          cb(null, line);
     
            returnTxt += line;
            x.value = returnTxt;
     
      })
     
      .on('error', function(err){
          console.log('Error while reading file.', err);
      })
     
      .on('end', function(){
          console.log('Read entire file.');
     
        })
     
        );
     
    }
     
    input.onchange = () => {
     streamFile(textarea, input.files.path);
        }

  2. #2
    Membre confirmé
    Homme Profil pro
    OoW
    Inscrit en
    Juin 2019
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Ukraine

    Informations professionnelles :
    Activité : OoW

    Informations forums :
    Inscription : Juin 2019
    Messages : 134
    Points : 472
    Points
    472
    Par défaut
    \ô/
    il n'y a apparemment pas de limitation dans la taille du texte d'une TEXTAREA, cependant le moteur de rendu des navigateurs décide de l’opportunité de la mise à jour de l'affichage et là la taille des données fait que cela prendra forcément un certains temps .

    Dans ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            returnTxt += line;
            x.value = returnTxt;
    il n'est peut être pas utile de réaffecter la totalité de la valeur, un simple x.value += line; pourait peut-être améliorer la situation mais je doute.

    Sur ce genre de soucis je partirais plutôt sur un type de pagination.

Discussions similaires

  1. afficher les données d'un fichier txt
    Par alsouri dans le forum Débuter
    Réponses: 8
    Dernier message: 04/11/2016, 14h19
  2. afficher les lignes d'un fichier qui ne sont pas dans lun autre fichier
    Par israellita dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 11/03/2011, 11h39
  3. Réponses: 3
    Dernier message: 18/06/2010, 10h56
  4. Réponses: 2
    Dernier message: 20/07/2008, 11h29
  5. Importer fichiers txt d'un dossier dans une table
    Par avantoux dans le forum Access
    Réponses: 16
    Dernier message: 28/12/2005, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo