LoginSignup
6
6

More than 5 years have passed since last update.

FuelPHPで(※wmv)ファイルのアップロード

Posted at

IE死ね。

最近FuelPHPでwmvファイルをアップロードする機会があったので以下メモ。

Uploadについては以前ちらっと書きましたが、やはり足りないと思うのでそれもちまちま。

参考はこちらのサイト様:FuelPHPのUploadクラスを詳しくまとめてみる。≫新人Webエンジニアの記録。

Uploadの基本形(DB登録あり)

// 初期設定
$config = array(
    'path' => DOCROOT.DS.'assets'.DS.'img'.DS.'profile',
    'normalize' => true,
    'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'),
        );

        // アップロード基本プロセス実行
        Upload::process($config);

        // 検証
if (Upload::is_valid())
{
    // 設定を元に保存
    Upload::save();
}
// 正常系
foreach (Upload::get_files() as $file){
    DB::insert('images')->set(array('filename'=>$file['saved_as']))->execute();
}

// 異常系
foreach (Upload::get_errors() as $file){

}

上記は、POSTされた画像をassets/img/profileにアップロードした後保存ファイル名をDBに登録する形のサンプルです。
パスおかしくね?って件については、あれです、セキュリティとかの関係上フレームワークをちょっといじったのでそのへんの関係です。
ここについても後々(最近いろいろ試してる時間がないのです)記事にしたいと思っています。

で、wmvなどの特殊な拡張子を扱うための設定等が以下。

1.MIMEタイプが認識されていない

Windowsの独自拡張子なので当然といえば当然。POST自体受け取ってもらえません。
COREPATH/config/mimes.phpに以下を追記。

mines.php
    return array(
        /* --- 中略 --- */
        'wmv'   =>  'video/x-ms-wmv'
    );

これを書くことでAPPPATH/config/upload.phpのホワイトリストに記述することが出来ます。

2.ファイルサイズが大きすぎてアップロードできない

これはphp.iniの設定の話ですので、そちらを修正。

php.ini
post_max_size = 30M
upload_max_filesize 30M

数字に根拠はありません。今回のシステム上妥当っぽい数字が入っています。
これは各々環境と必要分に合わせて調整するしかないと思います。

以上!

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6