本文介绍通过浏览器访问存储在OSS中的资源时被强制下载的可能原因,以及如何配置访问OSS文件时是预览行为的方法。

问题现象

通过浏览器访问存储在OSS中的资源时无法预览而是以附件形式下载。

问题原因

  • 使用OSS默认域名或传输加速域名访问某个时间点创建的Bucket内的特定类型文件时,OSS会强制在返回头中增加以下两个Header。
    x-oss-force-download:true
    Content-Disposition: attachment

    标准浏览器检测到 Content-Disposition: attachment 时,会出现下载而不是预览行为。

    以下为使用OSS默认域名或传输加速域名访问不同类型文件,导致强制下载时命中的x-oss-ec规则说明。

  • Content-Type设置为 application/octet-stream application/octet-stream 是二进制的下载流,导致强制下载。
  • Content-Disposition设置为 attachment
  • CDN缓存了错误的Content-Type或者Content-Disposition。
  • 浏览器不支持预览该格式的文件或者图片。

解决方法

  • 因使用OSS默认域名或传输加速域名访问OSS资源导致的强制下载问题,您需要使用自定义域名访问文件。具体步骤,请参见 控制台使用自有域名访问OSS资源
  • 因Content-Type设置导致的强制下载问题,您需要根据文件类型设置合理的Content-Type,同时确保浏览器支持预览该文件类型。关于Content-Type的更多信息,请参见 如何设置Content-Type(MIME)?
  • 因Content-Disposition设置导致的强制下载问题,您需要将Object Meta中的Content-Disposition设置为 inline 。具体步骤,请参见 管理文件元信息
  • 因CDN缓存导致的强制下载问题,您需要更新CDN缓存信息。
  • 因浏览器不支持预览文件格式导致的强制下载,您需要确认浏览器已安装支持预览当前格式文件的插件。