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());
}