Comment obtenir un navigateur web pour télécharger un fichier qui est stocké dans un JavaScript Chaîne?

J'ai été capable d'écrire du JavaScript pour provoquer le navigateur à télécharger un fichier à partir d'un serveur distant à l'aide de code comme ceci:

var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "filename.zip"
document.body.appendChild(iframe);

Qui fonctionne très bien. Cependant, maintenant j'ai une autre situation où le contenu du fichier sont stockées dans une chaîne de caractères dans mon JavaScript sur le navigateur de côté et j'ai besoin de déclencher un téléchargement de ce fichier. J'ai essayé de remplacer le troisième ligne au-dessus de cela, où 'myFileContents' est la chaîne de caractères contenant les octets du fichier:

iframe.src = "data:application/octet-stream;base64," + Base64.encode(myFileContents);

Cette obtient le fichier téléchargé, mais le nom de fichier est perdu. Dans google Chrome, le nom de fichier est seulement "télécharger". Aussi j'ai lu qu'il existe des limites à la taille de fichier autorisés dans certaines versions du navigateur.

Est-il un moyen pour y parvenir? À l'aide de JQuery serait OK. La solution doit soutenir tout type de fichier - zip, pdf, csv, png, jpg, xls, etc...

OriginalL'auteur Sean N. | 2013-05-08