Refile gem を使用してプラットフォームに画像を表示しています。Microsoft Edge を除くさまざまなブラウザーでうまく動作します。Microsoft Edge について知っておくべき別の形式または制限はありますか?
(私は Microsoft Edge を持っていないので、直接テストすることはできません)
どんな助けでも素晴らしいでしょう。ありがとう。
Refile gem を使用してプラットフォームに画像を表示しています。Microsoft Edge を除くさまざまなブラウザーでうまく動作します。Microsoft Edge について知っておくべき別の形式または制限はありますか?
(私は Microsoft Edge を持っていないので、直接テストすることはできません)
どんな助けでも素晴らしいでしょう。ありがとう。
MS Edge 25.10586.0.0 / EdgeHTML 13.10586 で確認したところ画像が表示されませんでした。
これは、画像が application/octet-stream として送信され、Edge がそれらを表示するのに十分な情報を持っていないために発生すると考えられます (確認が必要です)。
しかし、refile github ページでは、ロードされた各ファイルのメタデータを次のように追加できることがわかります。
class StoreMetadata < ActiveRecord::Migration
def change
add_column :users, :profile_image_filename, :string
add_column :users, :profile_image_size, :integer
add_column :users, :profile_image_content_type, :string
end
end
これらのフィールドは、ファイルの読み込み後に自動的に入力され、私の refile サンプル アプリの問題を修正します。
免責事項: 次の操作には注意してください。本番環境でこれを行う前に、いくつかのテストを行ってください。
不足している情報を既存のファイルに追加することができます。
現在Refile
、ファイル拡張子のみを使用してコンテンツ タイプを抽出しているようです。したがって、ファイル コンテンツで content-type を抽出し、アップロードされた各ファイルに対応する拡張子を持つファイル名を作成する必要があります。
それを行うにはおそらく多くの方法があります。refile アプリケーションで使用した方法について説明します。
ここに私のユーザーモデルがあります
class User < ActiveRecord::Base
attachment :profile_image
end
最初に以前の移行を実行して、不足しているフィールドを追加します。
gemfile に gemmimemagic
を追加して実行しますbundel install
。これは、コンテンツによってファイルの content-type を判別できます。
次に、各User
プロファイル イメージのコンテンツ タイプを抽出し、正しいファイル名を追加します。
User.all.each do |u|
subtype = MimeMagic.by_magic(u.profile_image.read).subtype
u.profile_image_filename = "profile_image.#{subtype}" if u.profile_image_filename.nil?
u.save
end
それだけです。