「PHP/ファイル入出力」の版間の差分
削除された内容 追加された内容
HTMLのdownloadプロパティだ |
ダウンロード関連の話題が長くなったので、節を分割。 |
||
192 行
== サーバーからのダウンロード ==
=== 概要 ===
PHPでダウンロードをブラウザに問いかけるには、下記のように header 関数というのを使って、ブラウザに問い掛けできる。
277 ⟶ 278行目:
PHPのここらへんの仕様は、あまり論理的ではなく、規則としてこう決まっていると思ったほうがいい。
316 ⟶ 317行目:
* 実際の例▼
* ソケット通信▼
高度なので説明を省略するが「ソケット通信」というパソコンどうしのネットワーク通信の際、HTTPサーバーとの通信方法は国際規格などで方式が決まっており、HTTPヘッダといわれるメッセージで命令を送受信する仕組みである。▼
PHPはソケット通信のための関数をサポートしており、そのソケット通信の関数の一部としてHTTPヘッダの関数も用意されており、本ダウンロードのコードではそれらの機能を流用している。▼
なお、サーバー系の言語としてPHP同様に有名な Perl という別言語もまた、ソケット通信の関数をいろいろとサポートしている。▼
上記のコードだと、ページが表示される前にダウンロードが始まってしまう。そのため、とても見づらくなる。
338 ⟶ 350行目:
2020年の近年、じつはダウンロードするだけなら、PHPなどを用いなくても、
HTML5では a タグに download 属性が追加された。
;コード例
346 ⟶ 361行目:
</syntaxhighlight>
::(2020年5月18日 に Fedora 32 上でのブラウザ Firefox76 で動作確認。)
のようにhrefのハイパーリンクのあるタグに download
なお、href で、コンテンツ名およびコンテンツの場所を指定する。コンテンツの場所がともにHTMLとともにドキュメントルートにあるなら、単にコンテンツのファイル名だけでよい。
上記コードの場合、単に「ダウンロード」をクリックするだけで、画像のダウンロードが開始する。
▲* ソケット通信
▲高度なので説明を省略するが「ソケット通信」というパソコンどうしのネットワーク通信の際、HTTPサーバーとの通信方法は国際規格などで方式が決まっており、HTTPヘッダといわれるメッセージで命令を送受信する仕組みである。
▲PHPはソケット通信のための関数をサポートしており、そのソケット通信の関数の一部としてHTTPヘッダの関数も用意されており、本ダウンロードのコードではそれらの機能を流用している。
▲なお、サーバー系の言語としてPHP同様に有名な Perl という別言語もまた、ソケット通信の関数をいろいろとサポートしている。
== 参考文献 ==
|