PaparClipでCSVをS3にアップロードした時にContent-Typeが'text/plain'になってしまう問題
2018-02-13 18:00:00 +0900
概要
PaperClipで、Railsで生成したCSVファイルをS3にアップロードするときに、Content-Typeが"text/plain"でアップロードされてしまうので、 S3にアップロードしたときに.txtファイルになってしまう問題がある。
とりあえずの解決方法
とりあえずS3にアップロードするタイミングでヘッダーにContent-Typeに"text/csv"を設定すればとりあえずOK。
今回利用したかったケースはシステム内部で生成したCSVをS3にアップロードする要件なので。 特にバリデーション周りが雑なんだけどまぁこんな感じで。
class Document < ActiveRecord::Base has_attached_file :document, storage: :s3, s3_credentials: "#{Rails.root}/config/private_s3.yml", s3_permissions: :private, path: "example.com/:id/:filename" validates_attachment :document, less_than: 512.megabytes do_not_validate_attachment_file_type :document end
class DocumentCsv < Document has_attached_file :document, storage: :s3, s3_credentials: "#{Rails.root}/config/private_s3.yml", s3_permissions: :private, path: "example.com/:id/:filename", s3_headers: {"Content-Type" => "text/csv"} end