4

我正在从流中获取文件内容

$src_file = file_get_contents("php://input");

但我还需要知道文件的文件类型和文件大小。这不起作用:

$src_type = filetype("php://input");
$src_size = count($src_file);

我想我可以编写文件,然后在其上调用 filetype/filesize,但是有没有办法从流或变量的内容中获取文件类型和文件大小?

4

2 回答 2

2

要获取字符串的完整长度,请使用strlen,这必须有效。没有简单的方法可以嗅探流的文件类型,您不应该尝试这样做。

但是由于您正在处理php://input,可能来自PUT请求,客户端通常应在标头中设置适当的 mimetype Content-Type。您可以从sapi$_SERVER['CONTENT_TYPE']$_SERVER['HTTP_CONTENT_TYPE']根据 sapi 获得此信息。

于 2013-01-07T20:15:23.583 回答
-1

在流中,文件的“类型”没有任何意义。流仅表示位的输入。所以filetype调用会失败,因为 PHP 根本找不到类型。但php://input不是文件。它是给 php.ini 的输入。例如,在 linux 中,它将能够执行以下操作:

ls | php file.php

在这种情况下,PHP 的输入不是文件,而是另一个程序的输出。

于 2013-01-07T20:04:21.717 回答