从perl中的请求获取附件
Getting attachment from request in perl
我想使用表单提交电子邮件字段,以便服务器可以发送。我使用 Perl 和 Mason 来处理这个问题。我希望用户能够添加多个附件,但是我遇到了一个我无法解决的问题。这是我尽可能简化的代码,并添加了对附件的检查。 (提交后我想停留在同一个页面,这就是为什么在Init部分有一个隐藏的复选框和条件,所以当我第一次访问该页面时它什么都不做。)
<!DOCTYPE html>
<html>
%foreach (@messages) {
<div class="alert">
<% $_ | h %>
</div>
%}
<body>
<form action="/Tools/SendEmail.html" name="form" enctype="multipart/form-data" method=post>
<input type="checkbox" id="submited_chck" name="submited" checked hidden>
<input type="file" name="attached_files" id="file_upload_btn" multiple>
<input type="submit" value="Submit">
</form>
</body>
</html>
<%args>
@messages => ()
$submited => ''
</%args>
<%init>
use strict;
use warnings;
use CGI;
if($submited eq 'on') {
my $req = new CGI;
my @attachments = $req->param('attached_files');
unless (@attachments) {
push @messages, "Attachments do not exist";
}
}
</%init>
问题是,如果我在提交之前执行任何请求并添加任意数量的附件,它不会从请求中获取附件,并且错误消息被推入数组并显示。只有当我重新启动 apache 服务并在它之后立即提交表单时,它才不会推送错误消息。知道是什么原因造成的吗?
您使用 hidden
属性的方式似乎有误。
请阅读:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden
所以我建议替换为:
<input type="checkbox" id="submited_chck" name="submited" checked hidden>
有了这个:
<input type="hidden" id="submited_chck" name="submited" value="on">
然后进一步调查。
我只需要更改:
my $req = new CGI;
至:
my $req = $m->cgi_object;
现在完美运行了。
我想使用表单提交电子邮件字段,以便服务器可以发送。我使用 Perl 和 Mason 来处理这个问题。我希望用户能够添加多个附件,但是我遇到了一个我无法解决的问题。这是我尽可能简化的代码,并添加了对附件的检查。 (提交后我想停留在同一个页面,这就是为什么在Init部分有一个隐藏的复选框和条件,所以当我第一次访问该页面时它什么都不做。)
<!DOCTYPE html>
<html>
%foreach (@messages) {
<div class="alert">
<% $_ | h %>
</div>
%}
<body>
<form action="/Tools/SendEmail.html" name="form" enctype="multipart/form-data" method=post>
<input type="checkbox" id="submited_chck" name="submited" checked hidden>
<input type="file" name="attached_files" id="file_upload_btn" multiple>
<input type="submit" value="Submit">
</form>
</body>
</html>
<%args>
@messages => ()
$submited => ''
</%args>
<%init>
use strict;
use warnings;
use CGI;
if($submited eq 'on') {
my $req = new CGI;
my @attachments = $req->param('attached_files');
unless (@attachments) {
push @messages, "Attachments do not exist";
}
}
</%init>
问题是,如果我在提交之前执行任何请求并添加任意数量的附件,它不会从请求中获取附件,并且错误消息被推入数组并显示。只有当我重新启动 apache 服务并在它之后立即提交表单时,它才不会推送错误消息。知道是什么原因造成的吗?
您使用 hidden
属性的方式似乎有误。
请阅读:https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden
所以我建议替换为:
<input type="checkbox" id="submited_chck" name="submited" checked hidden>
有了这个:
<input type="hidden" id="submited_chck" name="submited" value="on">
然后进一步调查。
我只需要更改:
my $req = new CGI;
至:
my $req = $m->cgi_object;
现在完美运行了。