Symfony1.4で、ファイル(CSV)アップロードのサンプル
2013年2月16日Table of Contents
Symfony1.4環境で、ファイル(CSV)のアップロード環境を構築することがあったので、そのメモ。
実際には、CSVからDBのCRUDを行った。
では、早速サンプルソース
- vim lib/form/myFileUpload.class.php
[php]
widgetSchema[‘csv’] = new sfWidgetFormInputFIle(array(
‘label’ => ‘アップロード’
));
// label
$this->widgetSchema->setNameFormat(‘file[%s]’);// post validator
$this->validatorSchema[‘csv’] = new sfValidatorFile(
array(
‘required’ => false,
‘path’ => ‘uploads/’,
‘mime_types’ => array(‘text/plain’),
));
}
}
[/php]– vim apps/frontend/modules/user/templates/listSuccess.php
[php]
hasFlash(‘error’)) : ?>
getFlash(‘error’) ?>
[/php]
- vim apps/frontend/modules/user/actions/actions.class.php
[php]
public function executeUpload(sfWebRequest $request)
{if ($request->isMethod('post')) { // フォームインスタンス生成後、bind $form = new myFileUploadForm(); $form->bind($request->getParameter($form->getName()), $request->getFiles('file')); // validチェック if ($form->isValid()) { $file = $form->getValue('csv'); $filepath = 'uploads/'. $file->getOriginalName(); if ($file->getOriginalName() == 'user.csv') { // ファイル保存 $file->save($filepath); // csvファイルから、レコード更新&追加 .... } else { $this->getUser()->setFlash('error', 'アップロードするファイルは、"user.csv"としてアップロードしてください'); $this->redirect('user/list'); } } $this->redirect('user/list'); }
}
[/php]
と、こんな感じで実装。
アップロード用ディレクトリのパーミッションを、書き込み可能にしておけば完了。
案外情報が少なかったので、コードを掲載してみた。
実運用では、ファイルサイズやCSVの各カラム、Validateチェックなどもあるのでこれだけでは終わらないけれど…