1. ホーム
  2. angularjs

Angularjsのシンプルなファイルダウンロードでルーターがリダイレクトされる

2023-08-07 19:50:37

質問

HTMLです。

<a href="mysite.com/uploads/asd4a4d5a.pdf" download="foo.pdf">

アップロードはユニークなファイル名を取得し、実名はデータベースに保存されます。私は単純なファイルのダウンロードを実現したいです。しかし、上記のコードは、/のためにリダイレクトします。

$routeProvider.otherwise({
    redirectTo: '/', 
    controller: MainController
});

で試してみました。

$scope.download = function(resource){
    window.open(resource);
}

とありますが、これはファイルを新しいウィンドウで開くだけです。

どのようなファイルタイプでも本当のダウンロードを可能にする方法について何かアイデアはありますか?

どのように解決するのですか?

https://docs.angularjs.org/guide/$location#html-link-rewriting

<ブロッククオート

以下のような場合、リンクは書き直されません。 ブラウザは元のリンクに対して全ページを再読み込みします。

  • ターゲット要素を含むリンク 例.

    <a href="/ext/link?a=b" target="_self">link</a>

  • 別ドメインに飛ぶ絶対リンク 例.

    <a href="http://angularjs.org/">link</a>

  • baseが定義されている場合に異なるベースパスにつながる'/'で始まるリンク 例.

    <a href="/not-my-base/link">link</a>

というわけで、あなたの場合、以下のようにtarget属性を追加してください。

<a target="_self" href="example.com/uploads/asd4a4d5a.pdf" download="foo.pdf">