gpt4 book ai didi

ruby-on-rails - 如何检测没有扩展名的图像扩展名?

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:01 24 4
gpt4 key购买 nike

我的情况:我有基于 RubyOnRails 的应用程序。我使用 Carrierwave 上传图片。

我错误地保存了很多没有扩展名的文件。因此,所有这些都具有空值的 content_type

有没有办法恢复这些图像的扩展?

谢谢

最佳答案

您可以尝试使用 unix 命令 file 来尝试检测 MIME 类型。例如:

$ file -bi i_am_a_png
image/png; charset=binary

这试图通过它的签名(二进制结构)来确定文件类型。

您可以运行这样的 bash 脚本来推断文件扩展名并相应地重命名文件:

#!/bin/bash

IFS=$"\n"
for f in *
do
mime=`file -bi $f`
if [ $? == 0 ]
then
ext=( $(echo $mime | awk -F ";" '{ gsub(".*/", ""); print $1}') )
cmd="mv $f $f.$ext"

echo $cmd
# `$cmd` # Uncomment when you're happy with the command output
else
echo "Could not detect file type"
fi
done

它只是循环遍历当前目录中的文件,运行 file -bi 并获取可以传递给扩展名的字符串部分(“image/png”中的“png”)。然后它使用扩展名重命名文件。默认情况下,它只是打印出命令,所以如果您满意它正在做正确的事情,请取消注释。

关于ruby-on-rails - 如何检测没有扩展名的图像扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com