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

How do I get a list of CGI.pm fields that are only file uploads?

我过去曾使用 CGI::Simple 作为通用上传处理器。我显然使用了一个名为 upload_fieldnames 的内部方法,其中 returns 一个上传的字段名称数组。

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

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

my @upload_fieldnames;

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

或者,作为单行:

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

更新:我只是想对此添加评论。

I am trying to adapt this code to use CGI.pm, because it is more commonly available for CentOS 7

我不确定您的用例是什么,但我强烈怀疑您最好花时间研究如何安装所需的模块,而不是解决缺少某些模块的问题。

如果对您有帮助,我刚刚构建了一个 CGI::Simple 的 RPM 并将其上传到我的 RPM 存储库 rpm-mag-sol.com