これは気が狂いますが、私はこれを行う方法がわかりません、そして言葉がどれほど一般的であるので、私が検索エンジンで必要なものを見つけるのは難しいです。私はこれが答えるのが簡単なはずだと思っています。
私はこれと同じことをする簡単なファイルのダウンロードが欲しいです:
<a href="file.doc">Download!</a>
しかし、私はHTMLボタンを使いたい。これらのどちらか:
<input type="button" value="Download!">
<button>Download!</button>
同様に、JavaScriptを介して単純なダウンロードを引き起こすことは可能ですか?
$("#fileRequest").click(function(){ /* code to download? */ });
私は間違いなく not ボタンのように見えるアンカーを作成する方法、バックエンドスクリプトを使用する方法、またはサーバーヘッダーやMIMEタイプを台無しにする方法を探しています。
あなたができるボタンのために
<form method="get" action="file.doc">
<button type="submit">Download!</button>
</form>
私はいくつかの調査をしましたが、最良の答えを見つけました。新しいHTML5のdownload
属性を使ってダウンロードを開始することができます。
<a href="path_to_file" download="proposed_file_name">Download</a>
どこで:
path_to_file
は絶対パスまたは相対パスです。proposed_file_name
は、保存先のファイル名です(空白でも構いません。デフォルトは実際のファイル名です)。これが役に立つことを願っています。
JQueryの場合:
$("#fileRequest").click(function() {
// // hope the server sets Content-Disposition: attachment!
window.location = 'file.doc';
});
HTML:
<button type="submit" onclick="window.open('file.doc')">Download!</button>
あなたは目に見えないiframeで「トリック」でそれをすることができます。あなたがそれに "src"を設定すると、ブラウザはあたかもあなたが同じ "href"を持つリンクをクリックするかのように反応する。 formを使った解決策とは反対に、それはあなたが追加のロジックを埋め込むことを可能にします。
window.open
を使ったときのように新しいウィンドウ/タブを点滅させることもありません。
HTML:
<iframe id="invisible" style="display:none;"></iframe>
Javascript:
function download() {
var iframe = document.getElementById('invisible');
iframe.src = "file.doc";
}
古いスレッドですが、単純なjsソリューションがありません。
let a = document.createElement('a')
a.href = item.url
a.download = item.url.split('/').pop()
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
ブートストラップバージョン
<a class="btn btn-danger" role="button" href="path_to_file"
download="proposed_file_name">
Download
</a>
ドキュメント化されたBootstrap 4 docs で、Bootstrap 3でも動作します。
私はこれがあなたが探していた解決策だと思います
<button type="submit" onclick="window.location.href='file.doc'">Download!</button>
私のJavascriptがCSVファイルを生成したケースがあります。ダウンロードするためのリモートURLがないので、私は以下の実装を使います。
downloadCSV: function(data){
var MIME_TYPE = "text/csv";
var blob = new Blob([data], {type: MIME_TYPE});
window.location.href = window.URL.createObjectURL(blob);
}
どうですか?
<input type="button" value="Download Now!" onclick="window.location = 'file.doc';">
ダウンロードリンクを非表示にしてボタンにクリックさせることができます。
<button onclick="document.getElementById('link').click()">Download!</button>
<a id="link" href="file.doc" download hidden></a>
あなたがVanilla JavaScript(jQueryなし)ソリューションを探していて、HTML5属性を使わずにこれを試すことができます。
const download = document.getElementById("fileRequest");
download.addEventListener('click', request);
function request() {
window.location = 'document.docx';
}
.dwnld-cta {
border-radius: 15px 15px;
width: 100px;
line-height: 22px
}
<h1>Download File</h1>
<button id="fileRequest" class="dwnld-cta">Download</button>
<a href="complexDownload" download="file.doc" onclick="this.href='file.doc';">
<button>Download <i>File.doc</i> Now!</button>
</a>
Safariでは機能しないようですが、Chromeでは機能しました。また、ユーザーがクリックしたときにリンクのhref属性を変更すると、古いバージョンのIEでは機能するようになりましたが、最新バージョンのIEまたはEdgeでは機能しませんでした。
<body>
タグと</body>
タグの間の任意の場所に、次のコードを使用してボタンを配置します。
<button>
<a href="file.doc" download>Click to Download!</a>
</button>
これはきっとうまくいくでしょう!
ページがロードされたときにダウンロードされるファイルが決定されたので、これは私にとって最終的にうまくいったものです。
フォームのアクション属性を更新するためのJS:
function setFormAction() {
document.getElementById("myDownloadButtonForm").action = //some code to get the filename;
}
JSを呼び出してフォームのaction属性を更新します。
<body onLoad="setFormAction();">
送信ボタン付きのフォームタグ:
<form method="get" id="myDownloadButtonForm" action="">
Click to open document:
<button type="submit">Open Document</button>
</form>
以下は _が_ workしなかった:
<form method="get" id="myDownloadButtonForm" action="javascript:someFunctionToReturnFileName();">
あなたがformを使うことができないならば、 downloadjs を使った別のアプローチは/ fit。 Downloadjsは、内部でblobとhtml 5ファイルAPIを使用しています。
{downloadjs(url、filename)})/>
* jsx/react構文ですが、純粋なHTMLで使用できます。
file.doc?foo=bar&jon=doe
のような複雑なURLがある場合の別の方法は、フォーム内に隠しフィールドを追加することです。
<form method="get" action="file.doc">
<input ty='hidden' name='foo' value='bar'/>
<input ty='hidden' name='john' value='doe'/>
<button type="submit">Download Now</button>
</form>
完成していない@Cfreakの回答に触発
ダウンロード属性
<a class="btn btn-success btn-sm" href="/file_path/file.type" download>
<span>download </span> <i class="fa fa-download"></i>
</a>
あなたは単に使用することができます:
<form action="/file.doc" align="center"> <input type="submit" id="custom-buttons" value="Click Here To Download" /> </form>