PHP file_put_contents 获取文件 extension/type
PHP file_put_contents get file extension/type
可以在 PHP 中获取带有 file_put_contents 的文件的扩展名吗?
我想使用 php 循环从服务器下载文件,但是每个文件都有不同的类型,我想知道是否有办法了解每个文件的扩展名?
代码示例:
<?php
$url = 'http://www.domain.com/file/123';
$fopen = fopen($url, 'r');
file_put_contents("filename", $fopen);
fclose($fopen);
?>
我怎样才能找出文件的类型,因为如果我只用名称来放置它是不切实际的?
我了解到您的问题是您不知道该文件的扩展名是什么。保存文件后,您可以像这样检测 mime 类型和扩展名
$fi = new finfo(FILEINFO_MIME,'/path/filename');
$mime_type = $fi->buffer(file_get_contents($file));
找到 MIME 类型后,您可以重命名它。当然请记住,这需要您的硬盘提供额外的 IO。
也许可以这样尝试:
get_headers ( $url )
通过 HTTP 传输的文件可能 在 Content-Disposition
HTTP header 中有一个名称。如果没有,那么 应该 是一个 Content-Type
HTTP header,它至少会告诉您文件的 MIME 类型;您可以将其映射到文件扩展名,并且需要自己组成一些文件名。如果两者都不存在,则您只能靠自己了。
第一步是在下载 HTTP body 之前阅读 HTTP header。 curl 扩展可以做到这一点,get_headers
可以做到(尽管需要额外的往返),或者其他基于套接字的 HTTP 库可以做到(我推荐这个,你想做 HTTP 请求,获取对 header 的访问权限,但 未 将整个文件读入内存)。寻找可以为您做这件事的库,这是一个有点宽泛的话题。
可以在 PHP 中获取带有 file_put_contents 的文件的扩展名吗?
我想使用 php 循环从服务器下载文件,但是每个文件都有不同的类型,我想知道是否有办法了解每个文件的扩展名?
代码示例:
<?php
$url = 'http://www.domain.com/file/123';
$fopen = fopen($url, 'r');
file_put_contents("filename", $fopen);
fclose($fopen);
?>
我怎样才能找出文件的类型,因为如果我只用名称来放置它是不切实际的?
我了解到您的问题是您不知道该文件的扩展名是什么。保存文件后,您可以像这样检测 mime 类型和扩展名
$fi = new finfo(FILEINFO_MIME,'/path/filename');
$mime_type = $fi->buffer(file_get_contents($file));
找到 MIME 类型后,您可以重命名它。当然请记住,这需要您的硬盘提供额外的 IO。
也许可以这样尝试:
get_headers ( $url )
通过 HTTP 传输的文件可能 在 Content-Disposition
HTTP header 中有一个名称。如果没有,那么 应该 是一个 Content-Type
HTTP header,它至少会告诉您文件的 MIME 类型;您可以将其映射到文件扩展名,并且需要自己组成一些文件名。如果两者都不存在,则您只能靠自己了。
第一步是在下载 HTTP body 之前阅读 HTTP header。 curl 扩展可以做到这一点,get_headers
可以做到(尽管需要额外的往返),或者其他基于套接字的 HTTP 库可以做到(我推荐这个,你想做 HTTP 请求,获取对 header 的访问权限,但 未 将整个文件读入内存)。寻找可以为您做这件事的库,这是一个有点宽泛的话题。