我写了一个带有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
端
答案 0 :(得分:1)
原来是一个糟糕的base64字符串。没有前缀或mime类型。我发誓,我查了一下!