[PHP][downloadLink] ファイルダウンロードツール

here-and-now-413091_1280
LINEで送る
Share on GREE
Share on LinkedIn

サーバー上にあるデータを他の人に渡したい時に、WEB公開ディレクトリに置いてあるファイルを直接指定したURLを公開すると、サイト内のフォルダ構成が見えてあまりいいURLとは言えない。

もし、そのファイルが置いてあるフォルダのディレクトリ表示した際に、ファイル一覧が表示されるような事になれば、情報漏洩にも繋がる可能性があります。

また、web公開エリアにおいておらず、ユーザーのホームディレクトリに置かれているファイルも、いちいちwebディレクトリに設置しなおすのも面倒くさい。
シンボリックで対応する場合も、ファイル単体で対応できないので、とてもめんどくさくなる。

そこで、簡単にダウンロードさせることができるURLを出力して、ダウンロードの実行ができるツールを作ってみました。

概要

  1. ダウンロードする階層をエンコードして見た目で分かりにくくする。
  2. エンコードされたURLからファイルをダウンロードさせる。
  3. サーバー内のどの領域でもダウンロード対象にする。
  4. ファイルの種類は問わない

プログラム

index.php

ツールの入り口になるソース。このファイルで全ての処理をさばく。

lib.php

ダウンロードやURLエンコードなどの処理のライブラリ。

libUrl.php

PHPはjavascriptと違って、自分のURLを取得するのが関数一発では難しいので(旧バージョンでは)URL取得するライブラリを付けます。

convert.html

表示用HTMLファイル。URLをコンバートするソースを記述。※デザインは一切入れていないので、気になる人はCSSを足してください。

使い方

1.ページにアクセス

スクリーンショット 2015-06-03 07.18.56

2.サーバー内のフルパスを記入

※複数ある場合は、改行で書き込んでください。
※入力欄が狭い場合は、カーソルで拡大できます。

スクリーンショット 2015-06-03 07.18.56

3.convertボタンを押す

以下の文字列が表示されます。

4.ダウンロードテスト

上記で表示されたURLをひとつずつブラウザのアドレスに入力すると、階層が間違っていないければ、ダウンロードが開始されます。

注意

容量の大きいファイルを扱う時は、PHPでreadしているので、一度メモリに格納されてしまうので、非力なサーバーの場合は、ファイル上限値を指定する必要があります。
※現段階では、無制限なので、サーバーダウンする可能性があります。

今後

ダウンロードする際にロギングして、ダウンロードされたログ管理をしたり、DL数など計測を行なってサービス化してもいいかもしれません。
また、ユーザー登録させて、ユーザー権限に応じたダウンロードを振り分けたり、サーバーのディレクトリの内部リストをエンコードURLで表示できたりしてもいいかもしれません。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*