Webtech Walker

PHPの画像アップロードライブラリ class.upload.php を使ってみた

class.upload.phpというライブラリを使って画像のアップロードを実装してみました。今回画像のアップロードで欲しかった機能は下記。

  • 保存する画像名を指定
  • 同名ファイルがあった場合は上書き
  • サムネイル画像も同時に保存

デモページにいろいろな使用例が掲載されています。

サムネイルのリサイズ等はデモページに載ってたので簡単にできたのですが、画像名の指定や上書き設定などは載ってなかったのでソース見ながら設定しました。

<?php
require "class.upload.php";

function image_upload($filename){
  $image_file = $_FILES['image_file'];
  $handle = new Upload($_FILES['image_file']);
  $upload_dir = "/home/user/files/";

  if(!$handle->uploaded)
    return $handle->error;

  //通常の大きさの画像
  $handle->file_overwrite     = true;      //ファイル上書き有効
  $handle->file_auto_rename   = false;     //ファイル名自動リネーム無効
  $handle->file_src_name_body = $filename; //ファイル名指定
  $handle->Process($upload_dir);           //画像アップロード実行

  //サムネイル画像
  $handle->file_overwrite     = true;
  $handle->file_auto_rename   = false;
  $handle->file_src_name_body = $filename . "_thumb";
  $handle->image_resize       = true;
  $handle->image_ratio_y      = true;
  $handle->image_x            = 50;
  $handle->Process($upload_dir);

  if (!$handle->processed)
    return $handle->error;
}

ファイル上書きに関しては、fileoverwriteを有効にするだけでよさそうだったのですが、fileauto_renameを無効にしないとうまく動きませんでした。

また、$handle->Process($upload_dir)を実行した時点でプロパティの値が初期化されるようなのでサムネイル画像にも同じようにプロパティを設定しています。

その他にもいろいろとオプション設定できるみたいで、かなり使えるライブラリじゃないかと思いました。

このエントリーをはてなブックマークに追加