PHP CodeIgniter と xajax でファイルをアップロードする方法について考察してみる

ある案件で、JavaScript でポップアップ表示させたフォームから、ファイルのアップロードを行うシステムを構築することになりました。

しかし、JavaScript では、セキュリティの都合によりファイルをアップロードすることができません。
xajax でも当然その制限を受けることになります。

なんとか実現できないか方法を探してみたところ、次の2方法が考えられるようです。

  • iframe でファイルアップロード用のフォームを作り、そこからアップロードさせる方法
  • flash などのアップロード用のプラグインを利用する方法

とりあえずは、iframe を利用した方法を検証してみました。

以下コードです。
パスは環境に合わせて適当に読み替えてください。

file_upload.php

[code lang=’php’] < ?php class File_upload extends Controller { /* * コンストラクタ */ function File_upload() { parent::Controller(); $this->load->library(‘useXajax’);
$this->xa->register(XAJAX_FUNCTION, array(&$this, ‘do_file_up’));
$this->xa->processRequest();
}

/*
* フォームの表示
*/
function index()
{
echo $this->xa->getJavascript(base_url() . ‘../js/’);
echo < <<_EOT_



_EOT_;
}

/*
* ファイルアップロード用フォームの表示
*/
function upload_form() {
//CodeIgniter のファイルアップロードクラスを利用
$config[‘upload_path’] = ‘./uploads/’;
$config[‘allowed_types’] = ‘gif|jpg|png’;
$config[‘max_size’] = ‘100’;
$this->load->library(‘upload’, $config);

if ( ! $this->upload->do_upload()) {
//初回でもエラーが表示されます
echo ‘error:’ . $this->upload->display_errors();
} else {
echo ‘success:’ . var_dump($this->upload->data());
}

echo < <<_EOT_





_EOT_;
}

/*
* ファイルアップロード後の処理
*/
function do_file_up($formValues, $filename)
{
$xr = new xajaxResponse;
//ファイルアップロード用のフォームを submit させる
$xr->call(“parent.frames[0].submitform”);
//アップロードしたファイル名を表示
$xr->assign(‘dump’, ‘innerHTML’, date(‘H:i:s’) . print_r($formValues, True) . $filename);
return $xr;
}
}
?>
[/code]

上記のコードでは、親フレームではファイル名しか取得できませんし、IE/firefox などのブラウザの互換性の問題(ファイル名の扱いにパスを含めるかどうかなど)もあります。
実際のシステムでは、セッションなどを使ったファイル情報のやりとりをする必要が出てくるかと思います。

とりあえず、情報が少ないので参考になれば、のコードだと思ってください。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

PHP CodeIgniter と xajax でファイルをアップロードする方法について考察してみる” に対して3件のコメントがあります。

  1. morimuraseiichi より:

    Thanks very much!!!!

  2. Kryu^2 より:

    >morimuraseiichi
    np!

コメントを残す