ディレクトリ内のファイルに勝手にリンクしてくれるPHP

2020年11月15日 12時00分 正午の月齢:0.3  月名:新月  潮汐:大潮 月齢:0.3[新月] 潮汐:大潮
(最終更新日:2021年09月01日)
3年前に投稿 | ウェブ・IT関係 | 1件のコメント

3分ぐらいで読めます。

特定のディレクトリ(フォルダ)にファイルを入れておくと、勝手に一覧のリストを作ってくれるPHPです。使い方としては「家で作った動画ファイル・パワポ資料などを会社でダウンロードして業務や研修で使うとき、会社からはFTPが使えない。なのでHTTPでダウンロードする。」みたいなことがしばしばあったので、さくっとダウンロードするためにPHPを書いてみた、という感じです。(もう少し正確にいうと、エックスサーバーのWebFTPの仕様が変わって、今まで簡単にデータのやりとりができていたのができなくなったことが動機なのです…以前のファイルマネージャのほうがよかった。)

<!DOCTYPE html>

<html>

<head>
<meta charset="utf-8">
<title>download list</title>
</head>

<body>
<ul>
<?
foreach(glob('{*.xml,*.webp,*.wmf,*.emf,*.html,*.wav,*.psd,*.eps,*.ai,*.iso,*.avi,*.mpg,*.mp4,*.mp3,*.7z,*.txt,*.png,*.tif,*.bmp,*.jpg,*.gif,*.zip,*.pdf}',GLOB_BRACE) as $file){
if(is_file($file)){
echo '<li><a href="',rawurlencode($file),'">',urldecode($file),'</a></li>';
}
}
?>
</ul>
</body>

</html>

青字の部分で指定した拡張子のファイルに対して、PHPファイルと同じフォルダ内のファイル名を拾いハイパーリンクを勝手に生成します。半角英数字以外のファイル名にも一応リンクを張るように、htmlspecialchars関数やurlencode関数ではなくrawurlencode関数でファイル名を取得していますが、ファイル名はぐちゃぐちゃになりますので(泣)、なるべく半角英数字でファイル名を付けたほうがいい気がします。

あ、そうそう。このままでは丸腰なので、必要に応じてBASIC認証等で守ってあげてくださいね。

参考にしたサイトたちはここらへん。

アップロード側の仕組みも作ったら便利だと思うけど今のところ手つかず。

2021-09-01追記

ファイル名をURLエンコードしてアップロードした場合、そのままのファイル名ででコードできるように、「<a href="',rawurlencode($file),'">',urldecode($file),'</a>」としてみました。

古い記事・新しい記事

古い記事 [2020年10月28日]
新しい記事 [2020年11月17日]

1件のコメント

  1. アップロードのためだけのPHP | 煤式自動連結器からのピンバック | 2020年11月20日 #

    […] ディレクトリ内のファイルに勝手にリンクしてくれるPHP 特定のディレクトリ(フォルダ)にファイルを入れておくと、勝手に一覧のリストを作ってくれるPHPです。使い方としては「家で […]

ごめんなさい、コメントフォームは閉鎖しています。

Translate »