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チェックなどもあるのでこれだけでは終わらないけれど…