質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1261閲覧

PDFファイルのリンクをクリックしたらブラウザで表示するのではなく、ダウンロードするようにしたい

groco

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/10/25 10:15

###前提・実現したいこと
PDFファイルのリンクをクリックしたらブラウザで表示するのではなく、ダウンロードするようにしたいと考えています。
PDFのファイル名は半角英数字と「-」「_」で構成されています。
htaccessでの設定とphpでの設定をそれぞれ試してみたところ、htaccessでは思ったような挙動にならず、PHPでは思っていた挙動が実現できました。
しかし、すでにPDFへのリンクを埋め込み済みのページへの適用ということと、PDFファイルの数がかなり多いので、できればhtaccessで設定した時のように一括でPDFへのリンクをダウンロードできるようにする方法はないでしょうか?
(試したPHPの記述方法では全てのPDFへのリンクを修正しないといけないので)

JSやPHPなどご存知の方法がございましたら教えていただけますと幸いです。
何卒よろしくお願いいたします。

###試したこと1(htaccessでの設定)
htaccessに下記記述を追加し、一括でaタグに指定したPDFファイルへのリンクをダウンロードするように設定して確認みたところ、ファイルによってダウンロードできたりブラウザで表示したりとまちまちな挙動になってしまいました。

htaccess

1AddType application/octet-stream .pdf

###試したこと2(PHPでの設定)
phpでPDFをダウンロードできるようにする方法を試してみたところ、こちらはちゃんとダウンロードするようになりました。

PHP

1$dir_path = "/assets/pdf/"; 2$file = array( 3 'PDF01' => 'test/Test01.pdf', 4 'PDF02' => 'test/Test02.pdf', 5 'PDF03' => 'test/Test03.pdf' 6); 7if(isset($_GET['id'])){ 8 foreach($file as $key => $value){ 9 if($_GET['id'] == $key){ 10 header('Content-Type: application/pdf'); 11 header('Content-Disposition: attachment; filename="' . $value . '"'); 12 header('Content-Length: '.filesize($dir_path . $value)); 13 readfile($dir_path . $value); 14 break; 15 } 16 } 17}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

IEだと、Content-Typeを無視することがあるようなので、.htaccessに、

Header always set X-Content-Type-Options nosniff

を付けてみてください。

投稿2017/10/25 14:43

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

groco

2017/10/26 06:46

ご回答くださりありがとうございます。 また、返信が遅くなってしまい申し訳ございません。 教えていただいた記述を追加して試してみたところ、今までダウンロードにならなかったPDFファイルもダウンロードされるようになりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問