是否有任何命令可以设置文件的 MIME 类型?例如:
mime --set --MIME="image/pjpeg" filename.jpg
答案1
问题是已经回答在@PHPLearner
评论中。不过,这里有一个更长的答案。
没有像mime
问题中问到的那样的特定命令,毫无疑问可以创建一个这样的命令。要添加新的 MIME 类型,只需编辑/etc/mime.types
文件。
假设你想添加带扩展名的 MIME 类型.btc
,那么
1. 检查 MIME 类型是否已存在
打开命令行并输入以下行(替换btc
为您的扩展程序)
grep 'btc' /etc/mime.types
现在,此命令将输出一行,如果该 MIME 类型已添加。对于特定的 MIME 搜索,它看起来像这样
$ grep 'cpp' /etc/mime.types
text/x-c++src c++ cpp cxx cc
$ grep 'py' /etc/mime.types
application/x-python-code pyc pyo
text/vnd.debian.copyright
text/x-python py
$ grep 'btc' /etc/mime.types
如果您的扩展程序没有输出任何行(如btc
本例中所示),或者输出的行不包含您的扩展程序,则您必须创建新的 MIME 类型。否则,您的扩展程序已在文件中包含 MIME 类型/etc/mime.types
。
2.1 创建 MIME 类型(如果需要)
如果没有输出,或者给出的输出不包含您的扩展,我们必须添加 MIME 类型。对于该类型,在命令行
gksudo gedit /etc/mime.types
修改以下文本,将“extension”一词替换为您的文件扩展名(无句点标记),将该行添加到文件末尾mime.types
,然后保存。此处我们的扩展名是 bitcoin,我们写入btc
(不是 .btc),这将被视为 bitcoin 文件的扩展名。
text/extension extension
并复制修改后的‘text/extension’部分。
在我们的例子中它看起来像
text/bitcoin-text btc
保存文件并退出。
.xml
2.2 使用文件和添加 MIME 类型update-mime-database
如果/etc/mime.types
您的扩展无法编辑文件,那么您可以尝试此解决方法。
创建一个新.xml
文件,像这样描述您的扩展并保存。
<?xml version="1.0" encoding="utf-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-info type="text/bitcoin-text">
<glob pattern="*.btc"/>
</mime-info>
</mime-type>
现在将此文件添加到/usr/share/mime/packages
文件夹 (參考)添加或修改完所需内容后,运行命令
sudo update-mime-database /usr/share/mime
3. 为 MIME 类型添加图标
现在我们需要将图标与 MIME 类型关联起来。获取一个 SVG 图标并将其命名为“text-extension.svg”,或者您修改后的 MIME 类型名称;这将是代表系统上所有 MIME 类型实例的图标。
因此,我们重命名 .svg 文件,以便它匹配比特币文本.svg(或“insertYourMIMEtype.svg”),以便slashes are replaced with "-"
和有no capital letters
。
然后只需运行以下命令,将“bitcoin-text”替换为您的 MIME 类型。
sudo cp bitcoin-text.svg /usr/share/icons/gnome/scalable/mimetypes
sudo gtk-update-icon-cache /usr/share/icons/gnome/ -f
重新登录后,所有以 MIME 扩展名结尾的文件都将显示该图标。
答案2
真正回答你的问题:MIME 类型不是真实的。文件中没有一些元数据表明“这是一个图像/png”。相反,MIME 类型是根据文件扩展名和魔法数字猜测的。要将文件作为具有特定 MIME 类型的文件提供,你需要适当地配置你的网络服务器。请参阅https://stackoverflow.com/questions/29017725/how-do-you-change-the-mime-type-of-a-file-from-the-terminal