たった5分でPHPのファイルアップロードを作る方法

のえる のえる 2019.09.11

業務系からコンシューマ向けサービスまで、あらゆるところでファイルのアップロードがあるこのご時世。
毎回、イチからファイルのアップロードを作るのは手間ですよね?

 

今回はそんな手間なファイルアップロードを一瞬で作ってしまう class.upload.php をご紹介します。

 

◆class.upload.phpに関するリンク

環境

実行環境はこんな感じです。

 

CentOS 7
PHP Version 7.1.11
Composer

 

※Composerのインストールおよび使い方の説明は割愛します
※Linuxの使い方の説明は割愛します
※記事記載時点での最新バージョン 2.0.2 で説明していきます

実装方法

インストール

まずは composer で class.upload.php をインストールします

 

続いて class.upload.php を使用できるようにします

注意

公式の解説では Namespace が \verot\Upload\Upload となっていますが、ライブラリの中身は \Verot\Upload\Upload となっているため、ダウンロードされたライブラリに合わせてあります。

 

さらに ファイルをアップロードするHTMLも作りましょう。

 

これで class.upload.php を使用する準備ができました。

ファイルをアップロードする

ファイルをアップロードするには下記のような感じになります。

たったこれだけでファイルのMimeTypeチェックからディレクトリの作成、アップロードまでが出来ちゃいます。
画像ファイル以外にExcelやPDFなどももちろんアップロード可能です。

画像ファイルをリサイズして保存する

画像ファイルを縮小して保存することはよくあると思います。
そんな時は下記のような感じになります。

アスペクト比率を維持したまま縮小という、よくある処理も計算をすることなく一瞬でできます。

画像ファイルを別の形式に変換して保存する

jpegをpngに変換して保存、なんていうことも下記のような感じですぐに実装できます。

変換処理もこの通り、たった1行でできます。
もちろん、前述の リサイズ も合わせ技で行うことが可能です。

ファイル名を指定して上書きする

アップロードするファイル名を変更し、さらに同名のファイルがある場合は上書きするためには下記のような感じになります。

デフォルトでは上書きがOFFになっています。
上書き設定をONにしない場合、ファイル名に連番が振られていきます。

アップロードするファイルのMimeTypeを制限する

アップロードを可能とするファイルの種類を制限したい場合があると思います。
そんな時は下記のような感じになります。

許可・拒否の両方で ワイルドカードの「*」 が使用できます。
また、追加したい場合は array_merge を使うことで簡単に追加できます。

 

さらにこのライブラリでは Base64文字列やローカルファイルを処理 したり、 画像を圧縮 したり、 画像の切り抜き・背景色の指定 など、様々なことができます。

Composerが使えない・使わない場合

もし環境によりComposerが使えない場合やWindowsで使用する場合など、別の方法でインストールしたい時はこちらの記事をご参照ください。
PhpSpreadsheetを例に挙げた、Composerを使わずに使用する方法を記載しています。

 

さいご

業務などでも使う機能を中心とした、基本的な機能をご紹介しました。
感想としては、導入コストが低く、少ない記述で十分な機能を提供できていると思います。

 

PHPのファイルアップロードを実装する前に、一度導入の検討をしてみてはいかがでしょうか?

POPULAR

のえる

書いた人

のえる

Full-stack Developer / Guitarist