Search code examples
ruby-on-railsrubyhexdump

Re-create image from hex code


We created an app on Android that a user can upload an image. The image is send through a post request on a Rails application as a bitmap. An example of what I get is this.

I want to use this hex code string in order to re-create the image and then save it to my Rails app as I could do with Paperclip.

Any tip or guidance to the right direction would be really appreciated.


Solution

  • For me, this looks very much like a JPEG file (it starts with 0xFFD8FF), so you could just save the string to a file and you're done:

    class UploadsController
    
       def create
         storage_path.open('w') {|f| f.write params[:file] }
         head :ok
       end
    
    protected
    
      def storage_path
        @storage_path ||= Rails.root.join('data/uploads', current_user.id, Time.now.to_i.to_s(36) << '.jpg')
      end
    end
    

    Of course, this assumes you have a current_user method identifying a logged-in user (e.g. from Devise), and you want to save the file locally in $RAILS_ROOT/data/uploads/$USER_ID/.

    For production, I'd create an Upload (or Image (or Media)) model (belongs_to :user), and move the processing logic (i.e. find storage place, convert string to file, additional checks) into that class.