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