【问题标题】:RoR/Refile Gem - Images not loading in Microsoft EdgeRoR/Refile Gem - 图像未在 Microsoft Edge 中加载
【发布时间】:2016-08-22 15:35:48
【问题描述】:

我们正在使用 refile gem 在我们的平台上显示图像,它们在除 Microsoft Edge 之外的不同浏览器上运行良好。我应该了解 Microsoft Edge 的其他格式或限制吗?

(我没有Microsoft Edge,所以无法直接测试)

任何帮助都会令人惊叹。谢谢。

【问题讨论】:

  • id 建议使用browserstack.com 来检查它,您将亲眼看到错误。您可以免费试用。
  • 我是 Microsoft Edge 团队的工程师。我们提供免费的虚拟机用于测试目的。您可以通过http://edge.ms 找到它们。图片是appearing for me

标签: ruby-on-rails ruby microsoft-edge refile


【解决方案1】:

我已经检查了 MS Edge 25.10586.0.0 / EdgeHTML 13.10586 并且没有显示图像。

我想这是因为图像是作为应用程序/八位字节流发送的,而 Edge 没有足够的信息来显示它们(需要确认)。

但在refile github page 上,您可以看到可以为每个加载的文件添加元数据,例如:

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 似乎只使用文件扩展名来提取内容类型。因此我们需要提取带有文件内容的 content-type 并为每个上传的文件创建一个具有相应扩展名的文件名。

可能有很多方法可以做到这一点。我将描述我在我的 refile 应用程序中使用的一种方法。

这是我的用户模型

class User < ActiveRecord::Base
  attachment :profile_image
end

首先运行之前的迁移以添加缺失的字段。

在 gemfile 中添加 gem mimemagic 并运行 bundel install。这可以通过内容来确定文件的内容类型。

然后为每个User 提取 profile_image 的内容类型并添加正确的文件名。

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

仅此而已。

【讨论】:

  • 哇,感谢您抽出宝贵时间。我会开始朝这个方向看。再次感谢。 :)
  • 嘿@YannVery 有没有一种简单的方法可以在现有文件中添加信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2018-06-22
  • 2015-11-07
  • 1970-01-01
  • 2020-02-15
  • 2018-09-19
相关资源
最近更新 更多