在PHP中,我有以下代码获取通过CGI提交的文件:
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)
该文件正在
发送Content-Disposition: form-data; name="userfile"; filename="filename"
Content-Type: application/octet-stream
正在上传的文件属于PNG。
如何访问$ _FILES通过perl获取的数据?
我可以使用CGI.pm和
$query->upload("filename");
但是如何获取标题“Content-Disposition”部分中的数据?
答案 0 :(得分:2)
引用doc:
当文件上传时,浏览器通常会以标题格式发送一些信息。该信息通常包括MIME内容类型。未来的浏览器也可以发送其他信息(例如修改日期和大小)。要检索此信息,请调用uploadInfo()。它返回对包含所有文档头的哈希的引用。
$filename = param('uploaded_file');
$type = uploadInfo($filename)->{'Content-Type'};
unless ($type eq 'text/html') {
die "HTML FILES ONLY!";
}
虽然param()也应该返回文件名(也可以作为文件句柄使用,但是不推荐使用,而且应该使用upload())。