web-dev-qa-db-fra.com

Comment forcer le téléchargement complet du fichier txt sur le lien?

J'ai un simple fichier texte et je souhaite télécharger ce fichier sur n'importe quel lien de balise d'ancrage.

Mais quand je clique sur ce lien, le fichier txt m’a montré mais n’a pas été téléchargé.

J'ai essayer ce code

<html>
    <head>
        <title>File</title>
    </head>
    <body>
        <a href="test.txt">Click here</a>
    </body>
</html>
22
Dhaval

Télécharger le fichier en cliquant sur le lien (au lieu de naviguer dans le fichier):

<a href="test.txt" download>Click here</a>

Téléchargez le fichier et renommez-le en mytextdocument.txt:

<a href="test.txt" download="mytextdocument">Click here</a>

L'attribut de téléchargement spécifie que la cible sera téléchargée lorsqu'un utilisateur cliquera sur le lien hypertexte.

Cet attribut n'est utilisé que si l'attribut href est défini.

La valeur de l'attribut sera le nom du fichier téléchargé. Il n'y a pas de restrictions sur les valeurs autorisées et le navigateur détectera automatiquement l'extension de fichier correcte et l'ajoutera au fichier (.img, .pdf, .txt, .html, etc.).

Si la valeur est omise, le nom de fichier d'origine est utilisé.

48
Efekan

Vous pouvez utiliser l'en-tête Content-Disposition .

Vous pouvez le faire avec PHP ou avec .htaccess.

PHP:

<?php
header("Content-Disposition: attachment");
header("Content-Type: text/plain"); // optional
readfile("yourfile.txt");
?>

Et vous pouvez ensuite utiliser l'URL de PHP ou y rediriger celle du TXT. Si vous voulez utiliser l'URL de PHP mais que vous voulez enregistrer le fichier avec le nom d'origine, vous pouvez échanger cette ligne:

header("Content-Disposition: attachment; filename=yourfile.txt");

.htaccess:

<Files yourfile.txt>
    Header set Content-Disposition attachment
</Files>
4
Pietu1998

Cela va télécharger votre fichier texte et le renommer: 

 <a href="http://www.example.com/myfile.txt" download="My Text File">click here</a>  
0
David

Tu peux le faire

<a href="data:text/plain;charset=UTF-8,test.txt" download>Click here</a>

Ou dans mon cas j'avais besoin de quelque chose de plus dynamique

var downloadFile = function(url){
  let a = document.createElement('a');
  a.href = 'data:text/plain;charset=UTF-8,' + '' + url;
  a.download = url.substr(url.lastIndexOf('/') + 1);
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

La principale différence était l'ajout 

data: text/plain; charset = UTF-8,

à mon URL de fichier texte

downloadFile (' http: //my.txt ');

0
Adam Winnipass

Les fichiers texte sont affichés dans le navigateur lorsque le type de contenu est envoyé sous forme de texte. Vous devrez changer le serveur pour l'envoyer avec un type de contenu différent ou utiliser un langage tel que PHP pour l'envoyer en téléchargement.

0
Sylas Seabrook