PHP file_put_contents获取文件扩展名/类型

时间:2015-04-24 14:38:28

标签: php file-get-contents

可以在PHP中使用file_put_contents扩展文件吗?

我想使用带循环的php从服务器下载文件,但是每个文件都有不同的类型,我想知道是否有办法理解每个文件的扩展名?

代码示例:

<?php 

  $url = 'http://www.domain.com/file/123';
  $fopen = fopen($url, 'r');
  file_put_contents("filename", $fopen);
  fclose($fopen);

?>

如何找出文件的类型,因为如果我只使用名称就变得不切实际?

3 个答案:

答案 0 :(得分:0)

我知道您遇到的问题是您不知道要为此文件添加什么扩展名。保存文件后,您可以像这样检测mime类型和扩展名

$fi = new finfo(FILEINFO_MIME,'/path/filename');
$mime_type = $fi->buffer(file_get_contents($file));

找到mime类型后,您可以重命名它。当然要记住,这需要来自硬盘的额外IO。

答案 1 :(得分:0)

也许像这样尝试smth:

#inner_box {
    /* … */
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

http://php.net/manual/en/function.get-headers.php

答案 2 :(得分:0)

通过HTTP 传输的文件可能Content-Disposition HTTP标头中有一个名称。如果没有,那么 应该是Content-Type HTTP标头,它至少会告诉您文件的MIME类型;你可以将它映射到文件扩展名,并需要自己编制一些文件名。如果两者都不存在,那就是你自己。

第一步是在下载HTTP正文之前读取HTTP标头。 curl扩展可以做到这一点,get_headers可以做到(虽然需要额外的往返),或者其他基于套接字的HTTP库可以做到(我推荐这个,你想让一个 HTTP请求,可以访问标头,但将整个文件读入内存)。环顾一下可以为你做这件事的图书馆,这是一个广泛的话题。