PHP,Zend Framework+Smarty, jQuery.uploadでファイルのアップロードを実装する方法
前提:ZendFramework+Smarty
参照:http://codezine.jp/article/detail/2929?p=2
前提:jQuery.upload
参照:
jQuery.uploadでファイルアップロード
http://nb-tech.doorblog.jp/archives/51471314.html
jQuery.upload
http://lagoscript.org/jquery/upload
各ファイル
form.tpl:フォームのテンプレート
upload.tpl:form.tplのresult部分に表示するテキスト
FileController.php:各アクションを定義
■form.tpl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="{$base}/js/jquery.js"></script> <script type="text/javascript" src="{$base}/js/jquery.upload.js"></script> </head> <body> <input id="upload" type="file" name="upload" enctype="multipart/form-data"> <button onclick="upload()">アップロード</button><br> <div id="result"></div> {literal} <script type="text/javascript"> <!-- function upload() { $('#upload').upload( '/files/upload', {key:'value'}, function (res) { $("#result").html(res); }, 'text' ); } --> </script> {/literal} </body> </html>
■upload.tpl
{$str}<br /> <img src="/images/{$filename}" />
■FilesController.php
public function uploadAction(){ //Smarty $s = new MySmarty(); if($_POST['key'] == 'value'){ $filename = basename($_FILES['upload']['name']); $file_tmp = $_FILES['upload']['tmp_name']; if (move_uploaded_file($file_tmp, './images/' . $filename)) { $isFileCopySuccess = 'YES'; } $s->assign('use', $_POST['use']); } //レスポンス テキスト if( $isFileCopySuccess == 'YES'){ $s->assign('str', $_POST['key'] . ':ファイル名「'.$filename.'」アップロードされました.'); $s->assign('filename', $filename); }else{ $s->assign('str', $_POST['use'] . ':ファイル名「'.$filename.'」Failed to save'); } $s->moduleDisplay($this->getRequest()); }