我有一个perl文件,该文件获取POST
附件的文件名。
my $file_name = $ENV{'HTTP_CONTENT_DISPOSITION'};
$file_name =~ s/^attachment; filename=\"(.*)\"$/$1/;
PHP中的等效项是什么?这仅仅是filename
作为POST变量吗?
很抱歉,这是一个菜鸟问题。我的perl不好,我的PHP noob级别也不错。 :)
答案 0 :(得分:3)
请求标头填充到$_SERVER
变量中。
$content_disposition = $_SERVER['HTTP_CONTENT_DISPOSITION'];
if (!$content_disposition) {
throw new Exception('Content-Disposition header missing');
}
if (preg_match(
'/^attachment; filename="(?P<file_name>.*)"$/',
$content_disposition,
$matches
)) {
// do something with $matches['file_name']
} else {
throw new Exception(
'filename match in Content-Disposition header failed, error: ' .
preg_last_error()
);
}
该正则表达式是解析标头(使用任何编程语言)的一种非常差的方法。
您应该真正将任务委托给更可靠的代码,并使用a higher-level library to handle uploads,方法名称为getClientOriginalName
。