Optimiser un upload de fichier et la lecture

Résolu
danieljsessec Messages postés 15 Statut Membre -  
danieljsessec Messages postés 15 Statut Membre -
Bonjour,

J'aimerai savoir s'il existe des manières d'optimiser un upload de fichier géré en Javascript.
J'explique, j'ai un formulaire et je peux uploader n'importe quel fichier, ce fichier je le lis ensuite via un arrayBuffer pour récupérer les octets du fichier sous la forme d'un int, cependant le traitement est relativement rapide sur des petits fichiers, mais sur un fichier à 5Mo rien que là ça plante, il y aurait-il un moyen de lire bloc par bloc ? ou de rendre ça asynchrone (en partant du principe que je dois garder mes octets dans l'ordre)

4 réponses

  1. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
     
    Bonjour,

    Sans le code, c'est dur d'aider ...

    Après, je ne comprends pas ce que tu essais de faire en voulant faire un upload lu octet par octet !

    Il faut nous en dire plus

    Cordialement,
    0
  2. danieljsessec Messages postés 15 Statut Membre
     
    Bonjour,

    Merci pour ta réponse oui sans le code c'est dur certes mais ce n'est qu'une simple lecture avec FileReader

    let reader = new FileReader();
    reader.readAsArrayBuffer(document.getElementById('mon_input_file').files[0]);
    


    Je le lis octet par octet car je veux encoder mon fichier via des algorithmes de chiffrement que j'ai écrit à côté de mon programme.

    De ce fait je lis octet par octet, je transforme mon octet et j'écris le nouvel octet dans un nouveau fichier, mais la partie qui ralenti le process c'est la lecture et je vois pas comment optimiser ça
    0
    1. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
       
      Encoder un fichier peut très bien se faire côté backend car encoder un fichier côté frontend c'est risqué comme tout ce qui est traité côté front car modifiable, contournable.

      Ca serait bien plus performant d'uploader le fichier en brut et de le chiffrer par PHP une fois sur le serveur.
      0
      1. danieljsessec Messages postés 15 Statut Membre > cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Il n'est pas question de sécurité car je ne traite pas le fichier par la suite, je ne le stock même pas

        J'envoie mon fichier au js il encore et je le fait télécharger directement

        Donc pas besoin de PHP
        0
    2. Utilisateur anonyme
       
      Il existe Blob.slice() dont File hérite qui permet de découper un fichier, mais JavaScript étant de nature mono-thread, je doute que vous en retiriez un quelqueconque gain de performance nativement. Je vous conseille de voir au sujet des Web Workers qui permettent le travail en parallèle. Pour des raisons de sécurité cependant, Chrome et Opera les bloquent en local via file:// ; vous devez alors utiliser un véritable serveur http, facilement montable avec Node.js. Dès lors, il s'agirait en effet de découper le fichier en parties, les identifier puis lancer un thread qui lit et transforme chaque partie dans un nouveau Worker. Rassembler ensuite les parties selon l'identifiant. Voyez en introduction : https://developer.mozilla.org/fr/docs/Web/API/Web_Workers_API/Utilisation_des_web_workers
      Bon succès,
      0
  3. danieljsessec Messages postés 15 Statut Membre
     
    Bonjour à tous,

    Au final je n'avais pas besoin d'optimiser la lecture mais plutôt mon système d'encodage.

    A+
    0