2月
16
2013
Symfony1.4環境で、ファイル(CSV)のアップロード環境を構築することがあったので、そのメモ。
実際には、CSVからDBのCRUDを行った。
では、早速サンプルソース
- vim lib/form/myFileUpload.class.php
<?php
class myFileUploadForm extends sfForm
{
public function configure()
{
// widget
$this->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'),
));
}
}
- vim apps/frontend/modules/user/templates/listSuccess.php
<?php if ($sf_user->hasFlash('error')) : ?></li>
</ul>
<div class="error_list"><?php echo $sf_user->getFlash('error') ?></div>
<?php endif ?>
<form action="<?php echo url_for('user/upload') ?>" method="post" enctype="multipart/form-data" >
<?php echo $form ?>
<input type="submit" value="CSVアップロード">
</form>
- vim apps/frontend/modules/user/actions/actions.class.php
public function executeUpload(sfWebRequest $request)
{
<pre><code>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');
}
</code></pre>
}
と、こんな感じで実装。
アップロード用ディレクトリのパーミッションを、書き込み可能にしておけば完了。
案外情報が少なかったので、コードを掲載してみた。
実運用では、ファイルサイズやCSVの各カラム、Validateチェックなどもあるのでこれだけでは終わらないけれど…
By KYO •
PHP
• Tags: csv, php, snipet, tips, upload
2月 16 2013
Symfony1.4で、ファイル(CSV)アップロードのサンプル
Symfony1.4環境で、ファイル(CSV)のアップロード環境を構築することがあったので、そのメモ。
実際には、CSVからDBのCRUDを行った。
では、早速サンプルソース
- vim apps/frontend/modules/user/templates/listSuccess.php
と、こんな感じで実装。
アップロード用ディレクトリのパーミッションを、書き込み可能にしておけば完了。
案外情報が少なかったので、コードを掲載してみた。
実運用では、ファイルサイズやCSVの各カラム、Validateチェックなどもあるのでこれだけでは終わらないけれど…
By KYO • PHP • Tags: csv, php, snipet, tips, upload