0

Refile gem を使用してプラットフォームに画像を表示しています。Microsoft Edge を除くさまざまなブラウザーでうまく動作します。Microsoft Edge について知っておくべき別の形式または制限はありますか?

(私は Microsoft Edge を持っていないので、直接テストすることはできません)

どんな助けでも素晴らしいでしょう。ありがとう。

4

1 に答える 1

1

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

それだけです。

于 2016-08-23T10:59:07.570 に答える