Javascript : Télécharger un fichier généré

vitesse

 

Tout d'abords, visualisez ce titre, et posez vous la bonne question ...

Pourquoi ? ... Oui Pourquoi ...

Pourquoi les américains se font-ils des foutus oeufs au bacon au ptit déj !?!

A non ... pas cette question là ...

 

Pourquoi donc s'amuser à générer en Javascript (coté client) un fichier, pour ensuite le faire télécharger par celui-ci ?

 

Tout simplement pour 2 raisons :

- Votre serveur est nettement moins malmené. en envoyant des petits bouts de fichier qui seront assemblés par l'internaute (a son insu, et par son navigateur, bref vous m'aurez compris).

- Coté vitesse, en téléchargeant un gros fichiers en pleins de petits morceaux, vous gagnez un temps fous, l'internaute voit une barre de progression beaucoup plus rapide.

 

Bref, le navigateur fais le boulot et non le serveur, et vous y gagnez niveau vitesse et performance ^^

 

L'idée m'est venu en regardant il y a quelques mois la nouvelle plateforme de Kim dotKom (megaupload le retour ....).

 

C'est exactement le même principe ^^

 

D'ailleurs de nombreux sites commencent à se mettre à utiliser cette méthode, tel qu'Intel

(je m'en suis rendu compte en essayant leurs XDK pour Android)

 

Pour vous donner une petite idée de comment ça fonctionne, voici quelques lignes de Javascript :

//Création d'un objet LIEN

var download = document.createElement('a');

 

//contenu

dowload.setAttribute(

 

'href',

 

"data:text/plain;charset=utf-8,"+encodeURIComponent("coucou c'est moi !!!"));

 

 

//Nom du fichier
download.setAttribute(

 

'download',

 

"test.txt");

 

//Simulation d'un click

download.click();

 

Bien sur, c'est simplifié, ici je me contente de créer un "objet" LIEN auquel j'envois des infos tel que le contenu et le nom, ensuite, je simule un click, ce qui déclenche le téléchargement.

 

On peut également imaginer une partie PHP qui envoi bout à bout des morceaux d'un fichiers, et une fonction javascript qui assemble le tout ;)

Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *