11
votes

"Télécharger" au lieu de "Ouvrir" un fichier texte

Dans une application GWT, j'aimerais avoir un bouton qui, lorsqu'il serait cliqué, téléchargera un fichier à une URL donnée. C'est un fichier journal de texte brut (non HTML) avec un suffixe .out.

Ma première tentative utilise "window.open ()" (essayé à la fois gwt et window javascript natif.Open)

Malheureusement, le navigateur (essayé Chrome et Firefox et IE) tente d'être intelligent et censote que le fichier est un fichier texte, et montre donc le contenu d'une pop up, au lieu de le télécharger. Pour aggraver les choses, il semble que le navigateur ralentissait le fichier .out comme s'il s'agit de HTML et de gâcher toutes les pauses de ligne et des onglets (essentiellement des espaces blancs).

Je ne contrôle pas du serveur HTTP qui sert le fichier .out. Donc, je cherche une solution latérale du client.

Quelqu'un peut-il suggérer une solution pour moi?

merci.


3 Réponses :


4
votes

Ajoutez cet en-tête à votre fichier.

<html>
  <head>
    <meta http-equiv="content-type" content="attachment; filename=log file.out">

RequestBuilder rb = super.doCreate(serviceEntryPoint);
rb.setHeader("Content-Disposition", "attachment; filename=log file.out;");
return rb;


4 commentaires

Désolé, je suis en fait nouveau au Royaume GWT et JavaScript, pourriez-vous l'élaborer un peu? Merci beaucoup pour votre réponse rapide.


Je devrais également noter que je n'ai pas de contrôle sur le serveur HTTP qui sert le fichier .out. Merci.


@nissemand Oui, vous ne pouvez pas trouver une copie de ce blog. Ça arrive.


Pas de soucis, je pensais que je vous le ferais savoir.



10
votes

Ce n'est pas possible sans modifier les en-têtes provenant du serveur.

Les navigateurs modernes prennent en charge le téléchargement attribut dans des balises qui vous permettent de déclencher un téléchargement à partir d'un lien normal: https://developer.mozilla.org/en-us/docs/web/html/element/a #Attributes

Malheureusement, IE11 n'est pas un "navigateur moderne" .


1 commentaires

Ceci est obsolète. HTML5 a ajouté l'attribut Télécharger pour A qui permet cela.



8
votes

avec HTML5, il est possible maintenant. Définissez un «Télécharger» attr dans Element. XXX

Source: http://updates.html5rocks.com/2011/08/downloading-Resources-in-html5-a-download


0 commentaires