Rails 5 + Carrierwave从手机上传图片?

时间:2017-08-18 22:35:55

标签: ruby-on-rails mobile carrierwave

我写了一个带有api的rails 5应用程序,移动应用程序可以通过使用Carrierwave gem将其通过base64编码的图像发送到服务器上。当我用Postman测试它时,端点工作得很好。但是当我尝试上传用移动相机拍摄的图像(无论是直接从应用程序发送还是通过邮递员发送)时,它都会失败。 Carrierwave只是没有保存图像。有谁知道为什么以及我能做些什么呢?

imageuploader.rb

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  storage :file

  def store_dir
    "uploads/#{mounted_as}/#{model.class.to_s.underscore}/#{model.id}"
  end

  def scale(width, height)
    process :resize_to_fit => [width, height]
  end

  def extension_whitelist
    %w(jpg jpeg gif png)
  end
end

model.rb

class Log < ApplicationRecord
  belongs_to :user, class_name: 'User', foreign_key: 'user_id'
  belongs_to :reward, class_name: 'Reward', foreign_key: 'reward_id'

  mount_base64_uploader :image, ImageUploader
end

controller.rb

class Api::V1::UsersController < Api::V1::BaseController

  def log
    @child = User.find(params[:id])
    unless @child.parent_id.nil?
      Log.create(user: @child, reward_id: params[:reward_id], image: params[:image]  )

     end
     head :ok
   end
 end

1 个答案:

答案 0 :(得分:1)

原来是一个糟糕的base64字符串。没有前缀或mime类型。我发誓,我查了一下!