Upload files encoded as base64 to carrierwave



Gem Version Build Status Code Climate

Upload files encoded as base64 to carrierwave.

This small gem can be useful for API's that interact with mobile devices.

As of version 2.3.0, this gem requires Ruby 2.0 or higher


Add the gem to your Gemfile:

gem 'carrierwave-base64'

Also add this if you need mongoid support:

gem "carrierwave-mongoid"


Mount the uploader to your model:

mount_base64_uploader :image, ImageUploader

Now you can also upload files by passing an encoded base64 string to the attribute.

Setting the file name

To set the file name for the uploaded files, use the :file_name option (without extention):

mount_base64_uploader :image, ImageUploader, file_name: 'userpic'

You can also pass a Proc for the file-name to allow dynamic filenames.

mount_base64_uploader :image, ImageUploader, file_name: -> { "file-#{DateTime.now.to_i}" }

Data format

The string with the encoded data, should be prefixed with Data URI scheme format:

data:image/jpg;base64,(base64 encoded data)


  1. Fork it ( https://github.com/[my-github-username]/carrierwave-base64/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request