在用阿里云OSS时,做了oss接口上传图片,到在返回取得图片地址时,无法在浏览器直接打开预览图片,打开变会变成下载图片。折腾了好久,不知道为什么。后面直接问了阿里客服,提交工单后解决问题。
问题描述
使用浏览器访问OSS资源,OSS资源被强制下载。
问题原因
文件被强制下载可能的原因以下所示:
使用OSS提供的默认域名,且没有经过其他配置。
对应资源的Content-Type设置错误。
对应资源的Content-Disposition设置错误。
CDN缓存了错误的Content-Type或者Content-Disposition。
浏览器不支持该格式资源的展示。
比如访问您的图片文件,无法预览,直接下载,是由于从从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件时,mimetype为以下值,Response Header中会自动加上Content-Disposition:'attachment=filename;'。即从浏览器访问图片类型文件时,会以附件形式进行下载。详情请参考说明。
如果需要预览图片,此时必须绑定您的自定义域名来访问。
如果已经使用自定义域名的情况下,图片还是被强制下载,请确认文件的Content-Type改成是否是image/jpeg。可以在上传文件时设置文件的Content-Type,或者上传后在OSS控制台修改。
解决方案
出于安全考虑,从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件时,mimetype为以下值,Response Header中会自动加上Content-Disposition:'attachment=filename;'。即从浏览器访问图片类型文件时,会以附件形式进行下载。建议用户可以使用自定义域名访问OSS请求,如何绑定自定义域名请参见绑定自定义域名,默认情况下不会强制下载。详情请参见OSS升级通知。
解决办法:
如果需要预览图片,此时必须绑定您的自定义域名来访问。