如何从远程服务器使用file_get_contents后获取文件的mime类型

Nic*_*tti 7 php alfresco mime-types

我正在从Alfresco的php中读取一个文件,然后将其输出到浏览器.唯一的问题是mimetype或文件的扩展名.这是我正在使用的代码:

<?php
ob_start();
//require_once("libs/FirePHPCore/fb.php");
require_once("libs/AlfrescoConnect.php");

$nomeFile = rawurldecode($_GET['nomeFile']);    
$urlDownload = $_GET['urlDownload'];
$fileDownloadUrl = AlfrescoConnect::$serverPath. $urlDownload . "&attach=true&alf_ticket=".AlfrescoConnect::getTiket();
fb($fileDownloadUrl);


$cnt = file_get_contents($fileDownloadUrl);


header("Content-type: Application/octet-stream");
header('Cache-Control: must-revalidate');
header('Content-disposition: attachment; filename=' .$nomeFile);
echo($cnt);
exit();

echo("Impossibile trovare il file");
Run Code Online (Sandbox Code Playgroud)

我从get becausa收到文件的名称,我不知道如何从露天获取名称,但我必须以某种方式猜测mimetype.如果我在第一个字符中"回显"$ cnt,则会提到它是一个PDF(例如在屏幕上我看到"%PDF-1.3%âÏÓ20 ob​​j <</Length 3 0 R/Filter/CCITTFaxDecode/DecodeParms <</K 0/Columns 2480/Rows 3508 >>/Type/XObject/Subtype/Image/Width 2480/Height 3508/BitsPerComponent 1/ColorSpace/DeviceGray >> stream"所以必须有办法获取mime_tipe从它有一个功能.

任何帮助都是值得赞赏的!

编辑.如果有人是intereste这里是一个类,你可以用来从mime类型获得扩展. http://www.ustrem.org/en/articles/mime-type-by-extension-en/

Wil*_*III 7

您可以使用以下finfo::buffer()方法:http : //php.net/finfo_buffer

<?php
$finfo = new finfo(FILEINFO_MIME);
echo $finfo->buffer($cnt) . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

注意:如果您比使用面向对象的方法更适合您,则可以选择使用finfo_buffer过程函数。


Mar*_*ryl 6

您不必猜测(又名自动检测)MIME 类型。

使用$http_response_header检索的最后的标题file_get_contents调用(或任何调用http[s]://包装)。

$contents = file_get_contents("https://www.example.com/");
$pattern = "/^content-type\s*:\s*(.*)$/i";
if (($header = array_values(preg_grep($pattern, $http_response_header))) &&
    (preg_match($pattern, $header[0], $match) !== false))
{
    $content_type = $match[1];
    echo "Content-Type is '$content_type'\n";
}
Run Code Online (Sandbox Code Playgroud)


pro*_*php -1

使用 cURL 而不是 file_get_contents,然后您可以看到响应标头,该标头有望具有 mime 类型。

或者您可以尝试使用此http://www.php.net/manual/en/ref.fileinfo.php或此已弃用的函数http://php.net/manual/en/function.mime-content-type.php