使用Perl Dancer
,我打算从浏览器中读取文件,对数据进行一些处理并将新数据发回给用户。但是,我无法从文件句柄中读取数据。
另外,请您告诉我们如何将数据发回给用户?
HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>CSS Registration Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="css/default.css"/>
</head>
<body>
<form method="POST" class="register">
<p> Please select a file to upload:
<BR> <INPUT TYPE="FILE" NAME="tfile">
</p>
</form>
</body>
Testing_app.pm:
package Testing_App;
use Dancer ':syntax';
our $VERSION = '0.1';
get '/' => sub {
template 'index.tt';
};
post '/' => sub {
my $tp = params->{fname};
my $tv = params->{vname};
my $tf = params->{tfile};
open(LOCAL, ">tp.lst") or die $!;
open(FN, "<$tf") or die $!;
while (<$tf>) {
print LOCAL $_;
}
template 'first.tt', { su => $tp, sv => $tv, sw => $tf };
};
true;
你能帮帮我吗?
答案 0 :(得分:0)
Dancer::Request::Upload
的文档中有一个如何处理文件上传的示例:
# somewhere in your view:
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit">
</form>
# and then in your application handler:
post '/upload' => sub {
my $file = request->upload('filename');
$file->copy_to($upload_dir); # or whatever you need
};
请注意,该示例使用/upload
作为实际发布文件数据的路由。 (创建两个只在请求方法上有所不同的/
路由会让人感到困惑。)
另请注意,表单元素的name
属性必须与传递给request->upload()
的值相匹配(在本例中为filename
)。