Я использую paperclip для загрузки файлов «application/octet-stream» mime-типа, но они не проверяются правильно.Rails, Paperclip не подтверждает тип контента «application/octet-stream»?
В контроллере, когда я называю replay.save!
, я получаю следующее сообщение об ошибке:
Validation failed: r_file has contents that are not what they are reported to be, r_file is invalid, r_file content type is invalid
Вот модель:
class Replay < ApplicationRecord
has_attached_file :r_file
validates_attachment_content_type :r_file, content_type: { content_type: "application/octet-stream" }
end
и метод создания в контроллере воспроизведения:
def create
@replay = Replay.new(replay_params)
if @replay.save
# This never runs because it won't validate.
puts "REPLAY SAVED."
redirect_to @replay
else
puts "REPLAY NOT SAVED."
render 'new'
end
end
Я проверил mime-тип файла, который я пытаюсь загрузить, и это определенно тип "application/octet-stream"
. Является ли Paperclip просто неправильным чтение файла?
EDIT:
Вот схема:
ActiveRecord::Schema.define(version: 20161203161351) do
create_table "replays", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "map"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "r_file_file_name"
t.string "r_file_content_type"
t.integer "r_file_file_size"
t.datetime "r_file_updated_at"
end
end
Paperclip не использует тип мим драгоценный камень, чтобы выяснить тип файла он использует 'file' check https://github.com/thoughtbot/paperclip/issues/1530 –
Возможно, файл возвращает что-то другое, например' application/x-bittorrent', но тип mime рассматривает его как 'octet-stream' –
Не будет ли тип файла одинаковым? Я просто попытался проверить использование 'application/x-bittorrent', и это тоже не сработало. – Fianchetto