宝塔面板加载阿里云OSS 碰到的奇葩问题,文件存在但就是不能预览。

昨天开始使用了阿里云OSS,并使用ossfs 2.0加载到了服务器上,上传了一个.SVG后缀的LOGO和一个.PNG后缀的LOGO,今天打开发现.SVG的LOGO不显示了,开始还以为图片突然就没了,但查看挂载的OSS上有这个文件,并且直接输入网址也能直接下载,那说明文件是在的,也能正常使用,但为什么就是不能预览呢?

经过一番折腾知道了问题:核心原因是浏览器对两种格式的解析规则与安全策略完全不同:PNG 靠二进制文件头兜底渲染,SVG 因是 XML 文本格式,必须依赖正确的image/svg+xml Content‑Type 才能预览,否则触发下载。

发现宝塔面板上传文件到 OSS 时,默认不会自动识别.SVG的Content-Type,而是会设为通用的application/octet-stream或text/plain
PS:如果你是用OSS直接传的,那就当我没说,OSS直接传不会出现这样的问题,只有通过宝塔面板上传才会出现这样的问题。
那么最终这个问题需要怎么解决呢?
配置 contenttype=auto + 完善 mime.types,新文件自动正确,一劳永逸。
给出代码如下

# 1. 先备份原有mime.types(防止出错可恢复)
cp /etc/mime.types /etc/mime.types.bak

# 2. 写入完整的MIME映射规则(包含宝塔常用的网页、图片、文档、音视频、字体等)
cat > /etc/mime.types << 'EOF'
# 基础文本/网页文件
text/plain                          txt
text/html                           html htm shtml
text/css                            css
application/javascript              js
application/json                    json
application/xml                     xml rss
text/markdown                       md

# 图片文件(含宝塔常用的上传图片类型)
image/jpeg                          jpg jpeg jpe
image/png                           png
image/gif                           gif
image/bmp                           bmp
image/tiff                          tif tiff
image/svg+xml                       svg svgz
image/webp                          webp
image/avif                          avif
image/heif                          heif heic

# 文档文件(宝塔常用的办公/下载文档)
application/pdf                     pdf
application/msword                  doc
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.ms-excel            xls
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.ms-powerpoint       ppt
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/zip                     zip
application/x-rar-compressed        rar
application/x-7z-compressed         7z

# 音视频文件(宝塔常用的媒体文件)
video/mp4                           mp4
video/mpeg                          mpeg mpg
video/quicktime                     mov
video/x-msvideo                     avi
video/webm                          webm
audio/mpeg                          mp3
audio/wav                           wav
audio/ogg                           ogg
audio/flac                          flac

# 字体文件(宝塔网页开发常用)
font/woff2                          woff2
font/woff                           woff
application/x-font-ttf              ttf
application/x-font-otf              otf

# 其他宝塔常用文件
application/x-sh                    sh
application/x-php                   php
text/x-python                       py
application/octet-stream            bin exe dll
EOF

# 3. 验证配置(查看是否写入成功)
cat /etc/mime.types | grep -E "(svg|css|js|webp|pdf)"

 

记得执行代码前先卸载OSS挂载,执行代码后在挂载,后续你在上传新的文件Content-Type就会是原来的属性了。

下面给出所有代码

# 1. 卸载当前挂载(替换为你的实际挂载目录,比如/www/ossfs/alioss/oss)
umount /www/ossfs/alioss/oss
# 2. 补全系统MIME,确保.svg映射正确(补全代码前面已经发过了,自己复制,这里只实例了SVG)
echo "image/svg+xml                   svg svgz" >> /etc/mime.types
# 3. 重新挂载并启用自动MIME(替换AK/SK、Bucket、Endpoint和挂载目录,内网挂载请替换URL为带-internal的)
ossfs ivye:/ /www/ossfs/alioss/oss -o url=https://oss-cn-shanghai.aliyuncs.com -o access-key-id=你的AK -o access-key-secret=你的SK -o contenttype=auto -o allow_other
# 4. 写入fstab,开机自动挂载(可选,避免重启后失效,内网挂载请替换URL为带-internal的)
echo "ossfs#ivye:/ /www/ossfs/alioss/oss fuse _netdev,url=https://oss-cn-shanghai.aliyuncs.com,access-key-id=你的AK,access-key-secret=你的SK,contenttype=auto,allow_other 0 0" >> /etc/fstab
# 5. 验证挂载(查看是否成功)
df -h | grep oss

 

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录