web-dev-qa-db-ja.com

リンク上の完全にtxtファイルを強制的にダウンロードする方法は?

シンプルなテキストファイルが1つあり、そのファイルをアンカータグリンクにダウンロードしたい。

しかし、そのリンクをクリックすると、txtファイルが表示されますが、ダウンロードはされません。

私はこのコードを試してみました

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

(ファイルに移動する代わりに)リンクをクリックしたときにファイルをダウンロードします。

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

ファイルをダウンロードして、名前をmytextdocument.txtに変更します。

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

Download属性は、ユーザーがハイパーリンクをクリックしたときにターゲットがダウンロードされることを指定します。

この属性は、href属性が設定されている場合にのみ使用されます。

属性の値は、ダウンロードしたファイルの名前になります。許可される値に制限はありません。ブラウザーは自動的に正しいファイル拡張子を検出し、ファイル(.img、.pdf、.txt、.htmlなど)に追加します。

値を省略すると、元のファイル名が使用されます。

56
Efekan

Content-Disposition ヘッダー。

PHPまたは.htaccess

PHP:

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

そして、PHPのURLを使用するか、TXTのURLをリダイレクトできます。 PHPのURLを使用したいが、元の名前でファイルを保存したい場合は、次の行を入れ替えることができます。

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

.htaccess

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

あなたはこれを行うことができます

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

または私の場合、もっと動的なものが必要でした

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);
}

主な違いは追加でした

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

私のテキストファイルのURLへ

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

2
Adam Winnipass

これにより、テキストファイルがダウンロードされ、名前が変更されます。

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

コンテンツタイプがテキストとして送信されると、テキストファイルがブラウザに表示されます。別のコンテンツタイプで送信するようにサーバーを変更するか、PHPなどの言語を使用してダウンロードとして送信する必要があります。

0
Sylas Seabrook