facebook twitter hatena line email

Php/fuelphp/画像アップロード

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

(セキュリティ未対応なままです。自己責任で。。

ひな形用意

cp fuel/core/config/upload.php fuel/app/config/upload.php

upload設定ファイル編集

vi fuel/app/config/upload.php

'path'              => DOCROOT.'/uploads' ,
'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'),

uploadディレクトリ作成

mkdir public/uploads -m 777

画像アップロードロジック

vi fuel/app/classes/controller/upload.php

class Controller_Upload extends Controller
{
    public function before() {
            parent::before();
            Config::load('upload', true);
        }
        public function get_index() {
            $files = array();
            try {
                $files = File::read_dir(Config::get('upload.path'));
            } catch (InvalidPathException $e) {
            }
            return View::forge('upload/index', array('files' => $files));
        }
        public function post_upload() {
            Upload::process(array('path' => Config::get('upload.path')));
            if (Upload::is_valid()) {
                Upload::save();
            }
            return Response::redirect('upload/index');
        }
}

vi fuel/app/views/templates/upload/index.php

<html>
<body>
        <form action="/upload/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="upload[]" multiple="true" />
            <input type="submit" />
        </form>
        <?php foreach ($files as $file) { ?>
        <?php if (is_array($file) or !is_file(Config::get('upload.path').DS.$file)) continue; ?>
        <img src="/uploads/<?php echo $file; ?>" />
        <?php break; ?>
        <?php } ?>
    </body>
</html>

アップロードファイルの先頭ファイル名変更

vi fuel/app/config/upload.php

'prefix' => 'test_',

アップロードファイルの後ろファイル名変更

vi fuel/app/config/upload.php

'suffix' => '_test',

拡張子変更

'extension' => 'img',

既にあるファイルをupしても自動リネームしないように変更

'auto_rename' => false,
'overwrite' => true,

ファイル名をつけてアップロード

Upload::processでのみ使用可能

Upload::process(
   array(
      'path' => Config::get('upload.path'),
      'new_name' => 'hoge',
    )
);

参考

http://kinjouj.hatenablog.jp/entry/20121126/1353902592