如何获取仅文件上传的CGI.pm字段列表?

时间:2018-12-18 06:56:28

标签: perl cgi cgi.pm

我过去曾经将CGI::Simple用作通用上传处理器。我显然使用了一个内部方法upload_fieldnames,该方法返回要上传的字段名称数组。

我正在尝试修改此代码以使用CGI.pm,因为它在CentOS 7中更常见。如何获得仅文件上传字段的列表?我发现的所有示例都使用已知的字段名,但我事先并不知道。其他字段可能与表单一起提交,我只需要对提供文件上传的字段进行操作即可。

1 个答案:

答案 0 :(得分:4)

CGI.pm没有等效的upload_fieldnames()方法,但是您可以通过结合使用param()upload()方法来合成某些东西。 param()将为您提供所有参数名称的列表,您可以使用upload()来检查每个参数是否都是文件上传。

my @upload_fieldnames;

foreach (param()) {
  push @upload_fieldnames, $_ if upload($_);
}

或者,单线:

my @upload_fields = grep { upload($_) } param();

更新:我只是想对此发表评论。

  

我正在尝试修改此代码以使用CGI.pm,因为它在CentOS 7中更常见。

我不确定您的用例在哪里,但我强烈怀疑您的时间会比花一些时间在解决如何安装所需模块上花费的时间多一些。

如果有什么帮助,我刚刚构建了CGI :: Simple的RPM,并将其上传到rpm-mag-sol.com的RPM存储库中。