シンプルなテキストファイルが1つあり、そのファイルをアンカータグリンクにダウンロードしたい。
しかし、そのリンクをクリックすると、txtファイルが表示されますが、ダウンロードはされません。
私はこのコードを試してみました
<html>
<head>
<title>File</title>
</head>
<body>
<a href="test.txt">Click here</a>
</body>
</html>
(ファイルに移動する代わりに)リンクをクリックしたときにファイルをダウンロードします。
<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など)に追加します。
値を省略すると、元のファイル名が使用されます。
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>
あなたはこれを行うことができます
<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 ');
これにより、テキストファイルがダウンロードされ、名前が変更されます。
<a href="http://www.example.com/myfile.txt" download="My Text File">click here</a>
コンテンツタイプがテキストとして送信されると、テキストファイルがブラウザに表示されます。別のコンテンツタイプで送信するようにサーバーを変更するか、PHPなどの言語を使用してダウンロードとして送信する必要があります。