宝塔面板加载阿里云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就会是原来的属性了。

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