我使用libmagic在我的项目的web界面中获取文件的mime类型。我在css和js文件上得到文本/普通mime类型。
例如,铬显示以下警告:
Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:8000/jquery-ui.css".
Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost:8000/jquery.timers.js".Http对话框
alex@alex-laptop ~ $ nc localhost 8000
GET /ui.css HTTP/1.1
HTTP/1.1 200 OK
Connection: close
Content-Length: 699
Content-Type: text/plain; charset=us-ascii
Date: Wed, 19 Sep 2012 11:41:48 GMT
...我该如何解决这个问题呢?
发布于 2012-09-19 22:36:13
您需要做与Apache相同的事情:查询MIME类型的扩展数据库,如果失败,请咨询libmagic。
文本和XML文件通常过于通用,libmagic无法识别。libmagic只能通过检查几个字节来确定文件类型,因此CSS和JavaScript不足以确定它们的确切类型。对于XML,libmagic必须有相当复杂的规则来确定文件是XHTML、SVG、XHTML+SVG还是生成XHTML和/或SVG的XSLT。这超出了它的范围。
发布于 2012-09-19 23:39:07
不确定你在做什么来需要这个。
通常你会知道哪些文件是什么,扩展名,目录等。
最简单的方法是检查扩展名--但是我猜,出于某些原因,这不是一个好的选择。
您可以创建一个自定义函数来解析和检测ecma和css:
if (mime==text/plain) { mime = my_parser(data); }您可以使用验证器并检查它是否验证为css或js。
你可以制作你自己的magic pattern file,在那里你可以测试你想要的东西--尽管很容易出错;
例如(非常简化的)…
文件my.magic:
0 search/4096 =function\
>&0 search/128 =)
>>&0 search/128 ={ JavaScript
!:mime application/javascript
0 search/4096 ={
>&0 search/512 =transition- CSS3
!:mime text/css
0 search/4096 ={
>&0 search/512 =background: CSS
!:mime text/css
0 search/4096 ={
>&0 search/512 =color: CSS
!:mime text/css然后编译它:
$ file -C -m my.magic并使用:
$ file -im my.magic.mgc some_filehttps://stackoverflow.com/questions/12494501
复制相似问题