JavaScript: Comment ouvrir un fichier renvoyé via AJAX
Ceci est similaire à: Comment ouvrir un fichier à l'aide de JavaScript?
Objectif: récupérer/ouvrir un fichier sur une image double-cliquez
function getFile(filename){
//setting mime this way is for example only
var mime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
jQuery.ajax({ url : 'get_file.pl',
data : {filename:filename},
success : function(data){
var win = window.open('','title');
win.document.open(mime);
win.document.write(data);
win.document.close();
}
});
}
jQuery('#imgID').dblclick(function(){
getFile('someFile.docx');
});
Je le fais sur le dessus de ma tête, mais je pense que le ci-dessus serait de travailler pour les fichiers texte, mais pas binaire. Est-il un plugin qui fait cela correctement? L'idéal serait d'ouvrir le fichier dans le navigateur (ou l'application), plutôt que de le télécharger, mais je doute que ce soit un rêve. Si le fichier doit être téléchargé avec le dialogue ouvrir/enregistrer, c'est bien.
Edit:
Un élément d'information que j'ai oublié de mentionner, c'est que j'aimerais que cela soit une requête POST. C'est en partie pourquoi j'ai été à la recherche à l'AJAX pour commencer. J'ai vu des solutions de contournement qui ont créé des formulaires/iframe pour faire quelque chose de similaire, mais j'ai été à la recherche pour un meilleur gestionnaire de retour d'info.
Quelle est la différence similaire à la question que vous avez lié?
bonne question. (1) la question que je liée à l'utilisation de Prototype et dans mon exemple j'utilise jQuery; je ne suis pas sûr si il ya une différence dans le retour de l'objet de leur requête AJAX, mais je pense que jQuery
data
retourne texte/chaîne. (2) je n'ai pas précisé un détail crucial, que je tiens à éviter une requête GET.là encore, la réponse dans la page à l'est de traiter avec les
responseText
, donc je suppose qu'ils étaient semblables à cet égard; toutefois, cette question a été de près de 3 ans et beaucoup de choses ont changé en javascript depuis lors, en particulier avec l'adoption plus large de HTML5.OriginalL'auteur vol7ron | 2012-06-12
Vous devez vous connecter pour publier un commentaire.
Me semble il n'y a pas de raison de le faire via AJAX. Il suffit d'ouvrir la nouvelle fenêtre de get_file.pl?filename=... et de laisser le navigateur de la gérer. Si l'utilisateur dispose d'un plugin capable de gérer la
Content-Type
envoyé par get_file.pl, le fichier affiche; sinon, il faut télécharger comme n'importe quel autre fichier.Modifier: Si vous voulez
POST
à votre script, vous pouvez le faire avec certains<form>
hackery:Bien sûr, cela est un peu bête car il est impossible de cacher vos données à partir de "regards indiscrets" avec les outils de développement. Si votre nom de fichier est vraiment sensible, la question des jetons d'accès au client, et de consulter les données de votre serveur de script.
Non, fenêtre.ouvrir ne prend pas en charge POST. Toutes les données sont visibles pour l'utilisateur, mais si vous ne voulez pas qu'il s'affiche dans la barre d'adresse, vous pouvez les transférer avec les cookies.
pas nécessairement; voir les modifications.
OK, vous pouvez l'afficher dans une fenêtre, c'est vrai.
J'ai toujours aimé qu'il y ait une meilleure façon de w/o Flash ou de la forme/iframe contrôles, mais je suppose que cela va faire. Je soupçonne HTML5 peut avoir un meilleur fichier de technique de gestion.
OriginalL'auteur josh3736