2017-08-18 10 views
1

モバイルアプリがCarrierwave gemを使用して、base64でエンコードされた画像をサーバーにアップロードするために呼び出すことができるapiを持つrails 5アプリを作成しました。エンドポイントは、私がPostmanでテストするときにうまく機能します。しかし、モバイルカメラで撮影した画像をアップロードしようとすると(アプリか郵便配達員から直接送信されたものであっても)、失敗します。 Carrierwaveは画像を保存しません。なぜ誰も私がそれについて何ができるか考えている人はいますか?Rails 5 + 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

私にコードを表示できますか?最近、私は携帯電話からCarrierWave画像をアップロードしましたが、問題は見つかりませんでした。 –

+0

メモリに問題があります。 –

+0

@artgb私はモバイルアプリの開発者ではありませんが、私は自分のサーバーコードを追加しました。我々は小さな画像でテストを行った。問題はモバイル側にあると思いますか? – BooBailey

答えて

0

悪いbase64文字列であることが判明。プレフィックスやMIMEタイプはありません。私はチェックして誓う!