# 无法下载非图像媒体文件，上传至 S3 后原始文件名丢失

**URL:** <https://meta.discourse.org/t/cannot-download-non-image-media-files-original-filenames-lost-when-uploaded-to-s3/152797>\
**Category:** Bug\
**Created:** [2020年五月26日 17:00 UTC](https://meta.discourse.org/t/cannot-download-non-image-media-files-original-filenames-lost-when-uploaded-to-s3/152797 "2020-05-26T17:00:48Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![md-misko](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/md-misko/32/126315_2.png) [@md-misko](https://meta.discourse.org/u/md-misko)\
**Post date:** [2020年五月26日 17:00 UTC](https://meta.discourse.org/t/cannot-download-non-image-media-files-original-filenames-lost-when-uploaded-to-s3/152797/1 "2020-05-26T17:00:48Z")

</div>

通过 `rake uploads:migrate_to_s3` 迁移到 S3 或存储在本地存储中的非图像媒体文件，在点击上传链接时会以原始文件名下载；而直接上传到 S3 的非图像媒体文件则会在新标签页中打开，且原始文件名会丢失。

`rake uploads:migrate_to_s3` 会为所有 **非图像** 上传设置 `content_disposition`。

> <https://github.com/discourse/discourse/blob/666823d4b7cf7bee4c1c81c1df1d1db944620f7f/lib/file_store/to_s3_migration.rb#L223>

而直接上传到 S3 则仅会为所有 **非媒体** 上传设置 `content_disposition`。

> <https://github.com/discourse/discourse/blob/d9a02d1336dd86e7fff4f14735fb0f1970555abd/lib/file_store/s3_store.rb#L57>

修复方法是将 `is_supported_media` 替换为 `is_supported_image`（已测试并确认按预期工作）。

---

_[View the full topic](https://meta.discourse.org/t/cannot-download-non-image-media-files-original-filenames-lost-when-uploaded-to-s3/152797)._
