【发布时间】:2014-10-30 15:33:24
【问题描述】:
自从 1 天以来,我就在这一点上感到震惊。 首先是获取所有文件名。然后上传并收集所有文件句柄。 由于某种原因,文件没有正确上传到 /home/img 文件夹。 如果上传,它们将被损坏。损坏的文件大小显示为 0 字节或 24 字节。
请提供上传部分的帮助。
#!/usr/bin/perlml -Tw
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $cgi = CGI->new;
my $upload_dir = "/home/img";
my @raw_filenames = $cgi->param('photos');
my $filename_characters = 'a-zA-Z0-9_.-';
my $ext = "";
my $raw_filenames = "";
my $raw_fh = "";
my $single_filename = "";
my $single_io_handle = "";
my @all_io_handle = "";
my @all_filenames = "";
print "Content-type: text/html\n\n";
#Getting the filenames ready
foreach $raw_filenames (@raw_filenames) {
( $single_filename, undef, $ext ) = fileparse( $raw_filenames, qr{\..*} );
push( @all_filenames, "$single_filename" );
}
#This prints the ready list of filenames
print "@all_filenames\n <br>";
#Getting the filehandles ready
my @raw_fh = $cgi->upload('photos');
foreach $raw_fh (@raw_fh) {
$single_io_handle = $raw_fh->handle;
push( @all_io_handle, "$single_io_handle" );
}
#This prints the ready list of filehandles
print "@all_io_handle\n <br>";
【问题讨论】:
-
调试时间:你能创建一个表单来成功上传单个文件吗?先确认一下。然后看看您是否可以创建一个具有多个具有唯一名称的上传字段的表单。确认有效。最后,为所有上传字段命名,就像您在此处尝试的那样。这可能会将问题隔离到更小的范围内,因此有助于确定问题。
-
我对@987654322@ 上传一无所知,但想知道你为什么不使用一些更高级别和更现代的框架,例如:Poet、Mojolicious、Dancer 等等......很多事情都简单得多,更容易和更快地开发-部署...
-
@Miller - 是的。我可以使用
code -
这些天来,CGI 模块看起来相当长。查看 CPAN 上的 CGI::Alternatives 以查看更现代(更简单!)的方法来完成您尝试在此处使用 cgi 完成的工作。
-
@Miller 我会尝试使用你说的方法。我会再回来的。
标签: perl file-upload cgi multifile-uploader file-processing