相关疑难解决方法(0)

如何找出文件的MIME类型(Content-Type)?

有没有办法找出Linux bash脚本中的文件的MIME类型(或称为"Content-Type"?)?

我需要它的原因是因为ImageShack似乎需要它来上传文件,因为它将某个.png文件检测为application/octet-stream文件.

我检查了文件,它确实是一个PNG图像:

$ cat /1.png 
?PNG
(with a heap load of random characters)
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

$ curl -F "fileupload=@/1.png" http://www.imageshack.us/upload_api.php
<links>
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error>
</links>
Run Code Online (Sandbox Code Playgroud)

这有效,但我需要指定MIME-TYPE.

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php
Run Code Online (Sandbox Code Playgroud)

linux bash mime content-type mime-types

91
推荐指数
4
解决办法
9万
查看次数

为什么mime_content_type上的一些mp3返回application/octet-stream

当我调用mime_content_type($ mp3_file_path)时,为什么在某些mp3文件中它返回application/octet-stream?

我有这个:

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $image = getimagesize($tempFile);
    $mp3_mimes = array('audio/mpeg', 'audio/x-mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/mpeg3', 'audio/x-mpeg3', 'audio/mpg', 'audio/x-mpg', 'audio/x-mpegaudio'); 

    if (in_array(mime_content_type($tempFile), $mp3_mimes)) { 
        echo json_encode("mp3");
    } elseif ($image['mime']=='image/jpeg') {
        echo json_encode("jpg");
    } else{
        echo json_encode("error");
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 我在这里找到了一个很好的课程:

http://www.zedwood.com/article/127/php-calculate-duration-of-mp3

php mp3 mime-types

7
推荐指数
2
解决办法
7650
查看次数

MIME类型检测是检测某种文件的最佳方法吗?

我正在使用PHP上传表格,只允许MP3文件.

上传完成后,我分析文件以检查它是否真的是MP3.第一步是将mime类型检测为audio/mpeg.我使用库finfo_file()并且工作正常,但在测试期间,一些MP3文件被拒绝,因为它们的MIME类型结果为application/octet-stream.

我的问题是:

  • 我的应用程序肯定会拒绝那些MP3文件吗?他们实际上播放音频.
  • 这个MIME类型是MP3的原因是什么原因?
  • 是检测MIME类型最明确的方式来了解文件的种类?

php mp3 mime-types

7
推荐指数
1
解决办法
3573
查看次数

在PHP 5.3.8上使用fileinfo进行Mime类型检测失败

我在使用fileinfo检测简单PNG文件的mime类型时遇到问题,在CentOS服务器上安装了PHP 5.3.8.

问题

基本上,如果我有以下代码:

<?php
$const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
$handle = finfo_open($const, '/usr/share/file/magic.mime');
$result = finfo_file($handle, '/var/vhosts/v4dev/public/Melvin.png');
echo $result;
unset($handle);
?>
Run Code Online (Sandbox Code Playgroud)

如您所见,该文件是PNG图像.已检查文件的头字节并且是正确的.但是此页面输出的结果不正确:

application/octet-stream
Run Code Online (Sandbox Code Playgroud)

我想这是因为无法检测到文件类型,fileinfo返回了默认响应,但我发现无法检查.

我尝试了什么

要检查magic.mime文件的正确性,我使用了文件控制台命令:

file -m /usr/share/file/magic.mime /var/vhosts/v4dev/public/Melvin.png
Run Code Online (Sandbox Code Playgroud)

哪个返回了预期的结果:

/var/vhosts/v4dev/public/Melvin.png: image/png
Run Code Online (Sandbox Code Playgroud)

我还尝试了Apache提供的另一个magic.mime文件,但问题仍然存在.

我尝试通过默认的fileinfo位置(使用符号链接和文件的副本),MAGIC环境变量以及通过指定finfo_open调用中的文件路径(如上所述)来指定magic.mime文件.

我试过更新PHP.

......现在我没有选择了.


如果有人能帮助我,我会在太空中发出幸福的浪潮,这样他/她就可以幸福地生活.

干杯

php centos fileinfo

5
推荐指数
1
解决办法
1273
查看次数

标签 统计

mime-types ×3

php ×3

mp3 ×2

bash ×1

centos ×1

content-type ×1

fileinfo ×1

linux ×1

mime ×1