Optimiser un upload de fichier et la lecture

Résolu
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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)
A voir également:

4 réponses

cs_PaTaTe Messages postés 2126 Date d'inscription   Statut Contributeur Dernière intervention   496
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
cs_PaTaTe Messages postés 2126 Date d'inscription   Statut Contributeur Dernière intervention   496
 
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   > cs_PaTaTe Messages postés 2126 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
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
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour votre réponse, les Web Workers semblent être ce dont j'ai besoin !
Je vais tester des codes et je mettrai le sujet en résolu avec des exemples

Pour ceux que ça pourrait intéresser j'ai trouvé ceci : https://www.html5rocks.com/en/tutorials/file/filesystem-sync/
0
danieljsessec Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à tous,

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

A+
0