- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Laravel 5 项目,让用户下载 .ai(插图文件)。问题是 Laravel 将 .ai 文件检测为 application/pdf。
我正在使用此功能检测 mime 类型
$type = File::mimeType( $_path );
$finfo = finfo_open(FILEINFO_MIME);
$mimetype = $finfo->file($_path);
finfo_close($finfo);
ErrorException: finfo_open(): Warning: offset `application\/activemessage' invalid in
Ubuntu 16.04
PHP 7.2
最佳答案
I figured, this has to be an issue with PHP simply not knowing what an .ai file is. I dug deeper into finfo and I understand that the default mime definitions are compiled into PHP, but I see that finfo_open, has a second argument 'magic_file', which I assume is a place that you can insert the path to a different mime definition file.
I have a Laravel 5 project, which let's an user download .ai (illustrator files). The issue is that Laravel detects .ai files as application/pdf.
.ai
文件为pdf。因为
Adobe Illustrator Artwork是可以保存为 EPS 或 PDF 格式的文件。
hexdump
和
file
.
$ hexdump -C 7_full_ai_vi_template_vector_8.ai | head
00000000 25 50 44 46 2d 31 2e 34 0d 25 e2 e3 cf d3 0d 0a |%PDF-1.4.%......|
00000010 31 20 30 20 6f 62 6a 0d 3c 3c 20 0d 2f 54 79 70 |1 0 obj.<< ./Typ|
00000020 65 20 2f 43 61 74 61 6c 6f 67 20 0d 2f 50 61 67 |e /Catalog ./Pag|
00000030 65 73 20 32 20 30 20 52 20 0d 2f 4d 65 74 61 64 |es 2 0 R ./Metad|
00000040 61 74 61 20 38 38 20 30 20 52 20 0d 3e 3e 20 0d |ata 88 0 R .>> .|
00000050 65 6e 64 6f 62 6a 0d 32 20 30 20 6f 62 6a 0d 3c |endobj.2 0 obj.<|
00000060 3c 20 0d 2f 54 79 70 65 20 2f 50 61 67 65 73 20 |< ./Type /Pages |
00000070 0d 2f 4b 69 64 73 20 5b 20 35 20 30 20 52 20 5d |./Kids [ 5 0 R ]|
00000080 20 0d 2f 43 6f 75 6e 74 20 31 20 0d 3e 3e 20 0d | ./Count 1 .>> .|
00000090 65 6e 64 6f 62 6a 0d 33 20 30 20 6f 62 6a 0d 3c |endobj.3 0 obj.<|
$ file 7_full_ai_vi_template_vector_8.ai
7_full_ai_vi_template_vector_8.ai: PDF document, version 1.4
.ai
的 PDF 文件延期。
Most of the topics online create a custom PHP function or some other hack to detect mime types, but I feel as if that is not the correct solution here.
Where can I find up-to-date mime definition files and how can I load them into PHP or finfo?
The %%Creator comment identifies the application that generated the PostScript language document. The version number (version 6.0 in Figure 1) is arbitrary text, terminated by a newline character.
%%Creator Adobe Illustrator
在文件的开头应标识为
.ai
.
$ cat ai
0 string %PDF- PDF document
!:mime application/pdf
>5 byte x \b, version %c
>7 byte x \b.%c
>7 search/1000 %%Creator:\ Adobe\ Illustrator Adobe Illustrator Document
.ai
$ cat fileinfo.php
<?php
$magic_file = __DIR__ . '/ai';
$finfo = new finfo(FILEINFO_NONE, $magic_file);
echo $finfo->file($argv[1]) . PHP_EOL;
$ php fileinfo.php ./7_full_ai_vi_template_vector_8.ai
PDF document, version 1.4 Adobe Illustrator Document
.ai
之后
$type = File::mimeType( $_path );
说是pdf文件。
关于php 7.2 finfo 魔法文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980025/
$finfo = new finfo(FILEINFO_MIME_TYPE); echo $finfo->file($file) 它给出: 对于 .msg:CDF V2 文档,已损坏:无法读取摘要信息
使用面向对象接口(interface)时finfo是如何关闭的?引用 http://php.net/manual/en/class.finfo.php . 有必要这样做吗? $finfo = finf
我有一个 Laravel 5 项目,让用户下载 .ai(插图文件)。问题是 Laravel 将 .ai 文件检测为 application/pdf。 我正在使用此功能检测 mime 类型 $type
在 2 个不同的 AMP 服务器(一个 Linux,一个 Windows)上,PHP 的 finfo 函数为 m4a 音频文件返回“video/mp4”的 mime 类型。 $path = '/pat
我想测试矩阵的所有元素是否都为零。我有一个 3x3 矩阵,其中包含非常小但非零的元素。像这样: my_matrix = numpy.mat( [[ 1.32439783e-16, -1.09384
处理上传的文件时 $_FILES['foo']['type'] 一点也不可靠。我发现如果您在 OS X 上更改扩展名,“类型”会自动更改。 而是考虑: $fileInfo = new \finfo(F
这很烦人,我无法使用 php finfo() 为许多不同的文件获取正确的 MIME 类型。 这是我的小测试程序: file('/mnt/partage/Film/Sintel.2010.1080p.m
您可以在 linux 中执行命令,而不是在文件上使用 finfo 来检索 content-type if(PHP_OS == 'WINNT'){ $finfo = new finfo(FILE
file($_FILES["fileToUpload"]["tmp_name"], FILEINFO_MIME); switch($fileinfo) { case "image/gif":
我已经搜索了网络和我的服务器,但我无法找到我网站的 php.ini。我的网站出现以下错误。 Class 'finfo' not found Details G:\inetpub\wwwroot\lan
将 Zend FR 更新到 1.11 后出现问题 Mimetype 文件检查生成: 警告:字符串扩展“B”无效 Zend_Validate_File_MimeType 中的字符串看起来像是问题的原因
我正在查看 PHP 7 以及它与我当前项目的配合情况。我遇到的一个问题是找不到 Finfo (fileinfo) 类。 new finfo(FILEINFO_MIME); // Class 'finf
我注意到,从 php 7.2 迁移到 7.3 后,文件浏览器小部件的加载时间要长得多。 通常需要不到一秒的操作花费的时间要长得多。启用 slowlog 后,我使用 finfo 将问题追溯到 MIME
我在使文件信息正常工作时遇到问题。它在 PHP.ini 中启用,但是当我运行 php -m 时它没有列出。我有 PHP 5.5,所以它应该是标准的,不需要 pecl。我是新手,很困惑,所以请善待。 p
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Getting A File’s Mime Type In Java 我正在寻找一些功能/插件,它正在做 f
我是一名优秀的程序员,十分优秀!