file upload周りの互換性チェックを軽くしてみたところ、そのまま動きそうなのでやる事無かった。
PluginはJSONとSession::State::Cookieが過去のRequest API使ってるけど、今のところ吸収されてるので放置しておく。
互換性一通り取れてそうなのでsvk pushした
http://trac.yappo.jp/trac/changeset/278
なんかコメントが酷い事になってる。。。
Catalystからコードを流用したお陰で、ファイルアップロードしてデータをすぐに表示するといった用途が楽に書けるようになった。
template/tt/default/default.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EngineTest - Default on Soozy</title>
</head>
<body>
<h1>Hello! EngineTest - Default default</h1>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><input type="submit" />
</form>
</body>
</html>
とテンプレートを書いて置いて
lib/EngineTest/C/Default.pm
package EngineTest::C::Default;
use strict;
use warnings;
use base qw( EngineTest );
sub do_default {}
sub do_upload {
my $self = shift;
my $upload = $self->req->upload('file');
return $self->forward('default') unless $upload;
$self->res->content_type($upload->type);
$self->res->body($upload->fh);
$self->handle_view('');
}
1;
とコントローラを書くと、アップロードしたファイルを直ぐに表示できる。
用途は全くないけど!