Inline Attachment image is not displaying in Rails 4 - ruby-on-rails

I've been trying to show inline attachments in my mail (logo),
I've seen many answers on the community, nothing seems to be working for me,
Mail is going fine,I can see the text but unable to see image
this is my mailer:
path variable contains path to logo
attachments.inline['logo.png'] = { content: File.read(path),mime_type: "image/png" }
this is my view:
Welcome to my site
<%= image_tag attachments['logo.png'].url%>
Please Help,I've been pulling my hair for hours now on this.

In your mailer try:
attachments.inline["myimage.png"] = File.read(File.join(Rails.root, "app", "assets", "images", "myimage.png"))
your view code is correct.
I've been using this code successfully with one image, though there may be a bug in rails. Check: https://github.com/rails/rails/issues/2686

Related

Rails: Received string from web service should be converted to a pdf image to be displayed

When using a web service I receive a string that looks like this:
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Y3V0ZSAyMjEgL1lhY3V0ZSAyMjkgL2FyaW5nIDI0OCAvb3NsYXNoIDIyNSAvYWFjdXRlIDIzNyAvaWFjdXRlIDI1MCAvdWFjdXRlIDI1MyAveWFjdXRlIDIxMCAvT2dyYXZlIDI0MiAvb2dyYXZlIDIwNCAvSWdyYXZlIDIzNiAvaWdyYXZlIDE5NSAvQXRpbGRlIDIxMyAvT3RpbGRlIDIyNyAvYXRpbGRlIDI0NSAvb3RpbGRlIDIyMiAvVGhvcm4gMjU0IC90aG9ybiAyMDkgL050aWxkZSAyNDEgL250aWxkZSAxMzggL1NjYXJvbiAxNTQgL3NjYXJvbiAyNDMgL29hY3V0ZSAyMTEgL09hY3V0ZSBdDQo+Pg0KL1dpZHRocyBbMjc4IDI3OCAzNTUgNTU2IDU1NiA4ODkgNjY3IDE5MSAzMzMgMzMzIDM4OSA1ODQgMjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiAyNzggMjc4IDU4NCA1ODQgNTg0IDU1NiAxMDE1IDY2NyA2NjcgNzIyIDcyMiA2NjcgNjExIDc3OCA3MjIgMjc4IDUwMCA2NjcgNTU2IDgzMyA3MjIgNzc4IDY2NyA3NzggNzIyIDY2NyA2MTEgNzIyIDY2NyA5NDQgNjY3IDY2NyA2MTEgMjc4IDI3OCAyNzggNDY5IDU1NiAzMzMgNTU2IDU1NiA1MDAgNTU2IDU1NiAyNzggNTU2IDU1NiAyMjIgMjIyIDUwMCAyMjIgODMzIDU1NiA1NTYgNTU2IDU1NiAzMzMgNTAwIDI3OCA1NTYgNTAwIDcyMiA1MDAgNTAwIDUwMCAzMzQgMjYwIDMzNCA1ODQgMCA1NTYgMCAyMjIgNTU2IDMzMyAxMDAwIDU1NiA1NTYgMzMzIDEwMDAgNjY3IDMzMyAxMDAwIDAgNjExIDAgMCAyMjIgMjIyIDMzMyAzMzMgMzUwIDU1NiAxMDAwIDMzMyAxMDAwIDUwMCAzMzMgOTQ0IDAgNTAwIDY2NyAwIDY2NyA1NTYgNTU2IDU1NiA1NTYgNjY3IDU1NiAzMzMgNzM3IDM3MCA1NTYgNjExIDAgNzM3IDYxMSA0MDAgNTU2IDMzMyAyMjIgMzMzIDU1NiA1MDAgMzMzIDMzMyAyNzggMzY1IDU1NiA1MDAgODM0IDgzNCA1MDAgNjY3IDY2NyA2NjcgNjY3IDY2NyA2NjcgMTAwMCA3MjIgNjY3IDY2NyA2NjcgNjY3IDI3OCAyNzggMzMzIDMzMyA3MjIgNzIyIDc3OCA3NzggNzc4IDc3OCA3NzggNTg0IDc3OCA3MjIgNzIyIDcyMiA3MjIgNjY3IDY2NyA2MTEgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgODg5IDUwMCA1NTYgNTU2IDU1NiA1NTYgMjc4IDI3OCAzMzMgMzMzIDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1ODQgNjExIDU1NiA1NTYgNTU2IDU1NiA1MDAgNTU2IDUwMCBdDQovTmFtZSAvRjANCj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8DQovTGVuZ3RoIDE2Mg0KL0ZpbHRlciBbL0ZsYXRlRGVjb2RlIF0NCi9UeXBlIC9YT2JqZWN0DQovU3VidHlwZSAvSW1hZ2UNCi9Db2xvclNwYWNlIFsvSW5kZXhlZCAvRGV2aWNlUkdCIDIyMyA8MDAwMDAwIDAwMDAzMyAwMDAwNjYgMDAwMDk5IDAwMDBjYyAwMDAwZmYgMDAzMzAwIDAwMzMzMyAwMDMzNjYgMDAzMzk5IDAwMzNjYyAwMDMzZmYgMDA2NjAwIDAwNjYzMyAwMDY2NjYgMDA2Njk5IDAwNjZjYyAwMDY2ZmYgMDA5OTAwIDAwOTkzMyAwMDk5NjYgMDA5OTk5IDAwOTljYyAwMDk5ZmYgMDBjYzAwIDAwY2MzMyAwMGNjNjYgMDBjYzk5IDAwY2NjYyAwMGNjZmYgMDBmZjAwIDAwZmYzMyAwMGZmNjYgMDBmZjk5IDAwZmZjYyAwMGZmZmYgMzMwMDAwIDMzMDAzMyAzMzAwNjYgMzMwMDk5IDMzMDBjYyAzMzAwZmYgMzMzMzAwIDMzMzMzMyAzMzMzNjYgMzMzMzk5IDMzMzNjYyAzMzMzZmYgMzM2NjAwIDMzNjYzMyAzMzY2NjYgMzM2Njk5IDMzNjZjYyAzMzY2ZmYgMzM5OTAwIDMzOTkzMyAzMzk5NjYgMzM5OTk5IDMzOTljYyAzMzk5ZmYgMzNjYzAwIDMzY2MzMyAzM2NjNjYgMzNjYzk5IDMzY2NjYyAzM2NjZmYgMzNmZjAwIDMzZmYzMyAzM2ZmNjYgMzNmZjk5IDMzZmZjYyAzM2ZmZmYgNjYwMDAwIDY2MDAzMyA2NjAwNjYgNjYwMDk5IDY2MDBjYyA2NjAwZmYgNjYzMzAwIDY2MzMzMyA2NjMzNjYgNjYzMzk5IDY2MzNjYyA2NjMzZmYgNjY2NjAwIDY2NjYzMyA2NjY2NjYgNjY2Njk5IDY2NjZjYyA2NjY2ZmYgNjY5OTAwIDY2OTkzMyA2Njk5NjYgNjY5OTk5IDY2OTljYyA2Njk5ZmYgNjZjYzAwIDY2Y2MzMyA2NmNjNjYgNjZjYzk5IDY2Y2NjYyA2NmNjZmYgNjZmZjAwIDY2ZmYzMyA2NmZmNjYgNjZmZjk5IDY2ZmZjYyA2NmZmZmYgOTkwMDAwIDk5MDAzMyA5OTAwNjYgOTkwMDk5IDk5MDBjYyA5OTAwZmYgOTkzMzAwIDk5MzMzMyA5OTMzNjYgOTkzMzk5IDk5MzNjYyA5OTMzZmYgOTk2NjAwIDk5NjYzMyA5OTY2NjYgOTk2Njk5IDk5NjZjYyA5OTY2ZmYgOTk5OTAwIDk5OTkzMyA5OTk5NjYgOTk5OTk5IDk5OTljYyA5OTk5ZmYgOTljYzAwIDk5Y2MzMyA5OWNjNjYgOTljYzk5IDk5Y2NjYyA5OWNjZmYgOTlmZjAwIDk5ZmYzMyA5OWZmNjYgOTlmZjk5IDk5ZmZjYyA5OWZmZmYgY2MwMDAwIGNjMDAzMyBjYzAwNjYgY2MwMDk5IGNjMDBjYyBjYzAwZmYgY2MzMzAwIGNjMzMzMyBjYzMzNjYgY2MzMzk5IGNjMzNjYyBjYzMzZmYgY2M2NjAwIGNjNjYzMyBjYzY2NjYgY2M2Njk5IGNjNjZjYyBjYzY2ZmYgY2M5OTAwIGNjOTkzMyBjYzk5NjYgY2M5OTk5IGNjOTljYyBjYzk5ZmYgY2NjYzAwIGNjY2MzMyBjY2NjNjYgY2NjYzk5IGNjY2NjYyBjY2NjZmYgY2NmZjAwIGNjZmYzMyBjY2ZmNjYgY2NmZjk5IGNjZmZjYyBjY2ZmZmYgZmYwMDAwIGZmMDAzMyBmZjAwNjYgZmYwMDk5IGZmMDBjYyBmZjAwZmYgZmYzMzAwIGZmMzMzMyBmZjMzNjYgZmYzMzk5IGZmMzNjYyBmZjMzZmYgZmY2NjAwIGZmNjYzMyBmZjY2NjYgZmY2Njk5IGZmNjZjYyBmZjY2ZmYgZmY5OTAwIGZmOTkzMyBmZjk5NjYgZmY5OTk5IGZmOTljYyBmZjk5ZmYgZmZjYzAwIGZmY2MzMyBmZmNjNjYgZmZjYzk5IGZmY2NjYyBmZmNjZmYgZmZmZjAwIGZmZmYzMyBmZmZmNjYgZmZmZjk5IGZmZmZjYyBmZmZmZmYgYzBjMGMwIDgwODA4MCA4MDAwMDAgMDA4MDAwIDAwMDA4MCA4MDgwMDAgODAwMDgwIDAwODA4MCA+IF0NCi9XaWR0aCAyMjA5DQovSGVpZ2h0IDENCi9CaXRzUGVyQ29tcG9uZW50IDgNCi9OYW1lIC8wDQo+Pg0Kc3RyZWFtDQp4XsWVUQ7AIAxCvf8Fvc7+tImEPuKy+bXUKZTSOtaaaontHSpf+6zfpveNdWEDV0mLVM6QZUBRHVIlnGsqGFBSXgqpI5b5n4RlRlLfi6rmGlAGmv5ZTto8k/aqJyjg0lDJDPuK2hh1cesMVdWYwduF1qOBJcznIB3QrOh3GvgnwjHAvpIQXz4L22qtK9l0D//iqGqAxO81lbYxO/XVA7D3SAYKZW5kc3RyZWFtDQplbmRvYmoNCjggMCBvYmoNCjw8DQovVHlwZSAvRm9udA0KL1N1YnR5cGUgL1R5cGUxDQovRmlyc3RDaGFyIDMyDQovTGFzdENoYXIgMjU1DQovQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkDQovRW5jb2RpbmcgPDwNCi9UeXBlIC9FbmNvZGluZw0KL0RpZmZlcmVuY2VzIFszMiAvc3BhY2UgMTk2IC9BZGllcmVzaXMgMjE0IC9PZGllcmVzaXMgMjIwIC9VZGllcmVzaXMgMjI4IC9hZGllcmVzaXMgMjQ2IC9vZGllcmVzaXMgMjUyIC91ZGllcmVzaXMgMjIzIC9nZXJtYW5kYmxzIDE5MiAvQWdyYXZlIDE5NCAvQWNpcmN1bWZsZXggMTk4IC9BRSAxOTkgL0NjZWRpbGxhIDIwMCAvRWdyYXZlIDIwMSAvRWFjdXRlIDIwMiAvRWNpcmN1bWZsZXggMjAzIC9FZGllcmVzaXMgMjA2IC9JY2lyY3VtZmxleCAyMDcgL0lkaWVyZXNpcyAyMTIgL09jaXJjdW1mbGV4IDE0MCAvT0UgMjE3IC9VZ3JhdmUgMjE5IC9VY2lyY3VtZmxleCAxNTkgL1lkaWVyZXNpcyAyMjQgL2FncmF2ZSAyMjYgL2FjaXJjdW1mbGV4IDIzMCAvYWUgMjMxIC9jY2VkaWxsYSAyMzIgL2VncmF2ZSAyMzMgL2VhY3V0ZSAyMzQgL2VjaXJjdW1mbGV4IDIzNSAvZWRpZXJlc2lzIDIzOCAvaWNpcmN1bWZsZXggMjM5IC9pZGllcmVzaXMgMjQ0IC9vY2lyY3VtZmxleCAxNTYgL29lIDI0OSAvdWdyYXZlIDI1MSAvdWNpcmN1bWZsZXggMjU1IC95ZGllcmVzaXMgMTk3IC9BcmluZyAyMTYgL09zbGFzaCAxOTMgL0FhY3V0ZSAyMDUgL0lhY3V0ZSAyMTggL1VhY3V0ZSAyMjEgL1lhY3V0ZSAyMjkgL2FyaW5nIDI0OCAvb3NsYXNoIDIyNSAvYWFjdXRlIDIzNyAvaWFjdXRlIDI1MCAvdWFjdXRlIDI1MyAveWFjdXRlIDIxMCAvT2dyYXZlIDI0MiAvb2dyYXZlIDIwNCAvSWdyYXZlIDIzNiAvaWdyYXZlIDE5NSAvQXRpbGRlIDIxMyAvT3RpbGRlIDIyNyAvYXRpbGRlIDI0NSAvb3RpbGRlIDIyMiAvVGhvcm4gMjU0IC90aG9ybiAyMDkgL050aWxkZSAyNDEgL250aWxkZSAxMzggL1NjYXJvbiAxNTQgL3NjYXJvbiAyNDMgL29hY3V0ZSAyMTEgL09hY3V0ZSBdDQo+Pg0KL1dpZHRocyBbMjc4IDMzMyA0NzQgNTU2IDU1NiA4ODkgNzIyIDIzOCAzMzMgMzMzIDM4OSA1ODQgMjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiAzMzMgMzMzIDU4NCA1ODQgNTg0IDYxMSA5NzUgNzIyIDcyMiA3MjIgNzIyIDY2NyA2MTEgNzc4IDcyMiAyNzggNTU2IDcyMiA2MTEgODMzIDcyMiA3NzggNjY3IDc3OCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCA2NjcgNjY3IDYxMSAzMzMgMjc4IDMzMyA1ODQgNTU2IDMzMyA1NTYgNjExIDU1NiA2MTEgNTU2IDMzMyA2MTEgNjExIDI3OCAyNzggNTU2IDI3OCA4ODkgNjExIDYxMSA2MTEgNjExIDM4OSA1NTYgMzMzIDYxMSA1NTYgNzc4IDU1NiA1NTYgNTAwIDM4OSAyODAgMzg5IDU4NCAwIDU1NiAwIDI3OCA1NTYgNTAwIDEwMDAgNTU2IDU1NiAzMzMgMTAwMCA2NjcgMzMzIDEwMDAgMCA2MTEgMCAwIDI3OCAyNzggNTAwIDUwMCAzNTAgNTU2IDEwMDAgMzMzIDEwMDAgNTU2IDMzMyA5NDQgMCA1MDAgNjY3IDAgNzIyIDU1NiA2MTEgNTU2IDU1NiA2NjcgNTU2IDMzMyA3MzcgMzcwIDU1NiA2MTEgMCA3MzcgNjExIDQwMCA1NTYgMzMzIDI3OCAzMzMgNjExIDU1NiAyNzggMzMzIDMzMyAzNjUgNTU2IDUwMCA4MzQgODM0IDUwMCA3MjIgNzIyIDcyMiA3MjIgNzIyIDcyMiAxMDAwIDcyMiA2NjcgNjY3IDY2NyA2NjcgMjc4IDI3OCAyNzggMjc4IDcyMiA3MjIgNzc4IDc3OCA3NzggNzc4IDc3OCA1ODQgNzc4IDcyMiA3MjIgNzIyIDcyMiA2NjcgNjY3IDYxMSA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA4ODkgNTU2IDU1NiA1NTYgNTU2IDU1NiAyNzggMjc4IDI3OCAyNzggNjExIDYxMSA2MTEgNjExIDYxMSA2MTEgNjExIDU4NCA2MTEgNjExIDYxMSA2MTEgNjExIDU1NiA2MTEgNTU2IF0NCi9OYW1lIC9GMQ0KPj4NCmVuZG9iag0KeHJlZg0KMCA5DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTEgMDAwMDAgbg0KMDAwMDAwMDExMSAwMDAwMCBuDQowMDAwMDAwMjk4IDAwMDAwIG4NCjAwMDAwMDAzNjMgMDAwMDAgbg0KMDAwMDAwMDU3MyAwMDAwMCBuDQowMDAwMDAxMDc0IDAwMDAwIG4NCjAwMDAwMDMwMDcgMDAwMDAgbg0KMDAwMDAwNDk1MSAwMDAwMCBuDQp0cmFpbGVyDQo8PA0KL1NpemUgOQ0KL1Jvb3QgMSAwIFINCi9JbmZvIDIgMCBSDQo+Pg0Kc3RhcnR4cmVmDQo2ODg4DQolJUVPRg0K
Sorry for that.
Anyway, this should be a pdf because that was one of the request parameters. (I could also have chosen for .gif, or .jpg in different qualities.)
I tried reading the content, like this:
#label_binary = #response_label[:generate_label_response][:response_shipments][:response_shipment][:labels][:label][:content]
binary_data = Base64.decode64(#label_binary)
#label = File.open('file_name.pdf', 'wb') {|f| f.write(Base64.decode64(binary_data))}
But what this prints then as #label is just a number (three of four digits). Same when I use urlsafe_decode64.
Not very helpful.
Preferred end-result would be a pdf image file that I can immediately display (in this case a barcode on top of an invoice for sending a package).
Could I for this purpose save the file temporarily? Meaning: every time I need to display I rebuild this image. I think that would be best.
EDIT
I am making the call now directly to a 600dpi .jpg image and then:
base_64_binary_data = #response_label[:generate_label_response][:response_shipments][:response_shipment][:labels][:label][:content]
#jpg_file = File.open('label.jpg', 'wb') do |file|
content = Base64.decode64 base_64_binary_data
file << content
end
This file shows up at my_apps_name/label.jpg.
In my filesystem I can see the picture crystal clear.
In my view I then put:
<%= image_tag #jpg_file.path %>
When I inspect my html in the browser I see:
<img src="/images/label.jpg" alt="Label">
I suppose this is easily fixed, suggestions are still welcome of course, but...
..more importantly: What if this call is made several times at once. Will rails manage? Should I maybe save these images (to my S3) or build some kind of chronejob to manage it?
(I am not sure of the added value of mini_magic anymore, since I can see the .jpg being already there.)
Then on a complete side note, maybe better left for a separate question: what if the API on the other side fails?
Step one
decode http response
require "base64"
BASE_64_BINARY_DATA = "PASTE YOUR BIG STRING HERE"
pdf_file = File.open('your_pdf.pdf', 'wb') do |file|
content = Base64.decode64 BASE_64_BINARY_DATA
file << content
end
Step two
convert pdf file to an image
add to gemfile 'gem 'mini_magick' and use 'bundle install' command
put somewhere in your code
require 'mini_magick'
pdf = MiniMagick::Image.new(pdf_file.path)
pdf.pages.first.write("preview.png")
image saved as preview.png
To display pdf image put in the view
<%= image_tag ("path_to_image/preview.jpg")%>

Ruby on Rails / HAML image_path not working in else condition?

I'm currently working on a project on RoR with haml, and i have an issue i have never saw before.
I have an "user profile" with an optional image. I want to show the image if it exists, if not, i show a placeholder (stored in assets => "admin/avatar.png". So, here is my sample code below:
-unless #user.image.nil?
=image_tag #user.image.url,class:"img-responsive img-circle",style:"width:150px;height:150px;margin:auto;"
-else
%img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}
%img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}
The first
%img.img-responsive.img-circle{:src => image_path("admin/avatar.png"),style:"width:150px;height:150px;margin:auto;"}
is not working (and shows "missing") and the seconde is actually working. I'm a bit lost with this.
Anyone ?
thanks.
unless else is a kind of code smell
A solution I'd propose:
- if #user.image.present?
= image_tag(#user.image.url, class:"img-responsive img-circle",style:"width:150px;height:150px;margin:auto;")
- else
= image_tag('admin/avatar', class:"img-responsive img-circle", style:"width:150px;height:150px;margin:auto;")

Rails Upload a File

I'm using rails 3.2.13, and i need to upload a file manually (not using paperclip) and then convert it base 64.
The problem i have is that i think my file is not uploaded completly.
I am trying to upload a jpg.
Here is the code : the form
= form_tag send_kyc_docs_bookings_path , :multipart => true do
= file_field_tag :kyc_doc
= submit_tag "Submit"
My controller
#encoded_file = Base64.encode64(File.open(params[:kyc_doc].tempfile,"r").read)
What i get is
"/9j/4AAQSkZJRgABAQEAtAC0AAD/4R5kRXhpZgAASUkqAAgAAAAQAA8BAgAG\nAAAAzgAAABABAgAVAAAA1AAAABIBAwABAAAAAQAAAA==\n"
Now if i go on http://www.base64-image.de/step-2.php
I upload my file and get a string beginning like mine above but 1000 times longer.
So i came to the point that my file was not uploaded completly and here is my question:
how can i upload it completly?
Just for you to underqtand if i do
File.open(params[:kyc_doc].tempfile,"r").read
i get
"\xFF\xD8\xFF\xE0\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000\xB4\u0000\xB4\u0000\u0000\xFF\xE1\u001EdExif\u0000\u0000II*\u0000\b\u0000\u0000\u0000\u0010\u0000\u000F\u0001\u0002\u0000\u0006\u0000\u0000\u0000\xCE\u0000\u0000\u0000\u0010\u0001\u0002\u0000\u0015\u0000\u0000\u0000\xD4\u0000\u0000\u0000\u0012\u0001\u0003\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000"
Now if i do
params[:kyc_doc].tempfile.read
i get
"\xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01\x01\x01\x00\xB4\x00\xB4\x00\x00\xFF\xE1\x1EdExif\x00\x00II*\x00\b\x00\x00\x00\x10\x00\x0F\x01\x02\x00\x06\x00\x00\x00\xCE\x00\x00\x00\x10\x01\x02\x00\x15\x00\x00\x00\xD4\x00\x00\x00\x12\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1A\x01\x05\x00\x01\x00\x00\x00\xEA\x00\x00\x00\e\x01\x05\x00\x01\x00\x00\x00\xF2\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x002\x01\x02\x00\x14\x00\x00\x00\xFA\x00\x00\x00\x13\x02\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x10\x03\x00\x01\x00\x00\x00\x00\b\x00\x00\x02\x10\x03\x00\x01\x00\x00\x00\x00\x06\x00\x00i\x87\x04\x00\x01\x00\x00\x00\x16\x01\x00\x00\x01\xA4\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\xA4\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03\xA4\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\xA4\x05\x00\x01\x00\x00\x00\x0E\x01\x00\x00\x06\xA4\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\xBC\x03\x00\x00Canon\x00Canon PowerShot A610\x00\x00\xB4\x00\x00\x00\x01\x00\x00\x00\xB4\x00\x00\x00\x01\x00\x00\x002009:03:18 16:30:39\x00 \n\x00\x00 .... (1000 times longer)
however doing
Base64.encode64(params[:kyc_doc].tempfile.read)
return an empty string
Update :
File.open(params[:kyc_doc].tempfile,"r").size
=> 241202
>> File.open(params[:kyc_doc].tempfile,"r").read.size
=> 76
has anyone an idea on the subject?
Thanks
ANSWER
Ok so i figured it out, in fact when you do
File.open(params[:kyc_doc].tempfile,"r")
It only see the first caracteres of the file (maybe because of the buffer size?)
so you need to iterate through the all sets of caracteres containing in the doc by doing
File.open(params[:kyc_doc].tempfile, "rb") {|io| io.read}
this will output all the document content
and now you can properly encode it
#encoded_file =
Base64.encode64(File.open(params[:kyc_doc].tempfile,"rb") {|io|
io.read})
If anyone can explain it better, i would be glad to hear it ^^

Image Data URI Active record Rails

I am running an API Request in the Rails Console to return the data of a movie poster.
I start by specifying what the movie is so,
#movies = Movie.find('Iron Man')
It then returns the one of the posters' urls
http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w92/s2IG9qXfhJYxIttKyroYFBsHwzQ.jpg
I then run a code to return the above poster's data, this is what it gives
> #movie.posters.first.data
=> "\xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xFF\xDB\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\b\x05\x05\x04\x04\x05\n\a\a\x06\b\f\n\f\f\v\n\v\v\r\x0E\x12\x10\r\x0E\x11\x0E\v\v\x10\x16\x10\x11\x13\x14\x15\x15\x15\f\x0F\x17\x18\x16\x14\x18\x12\x14\x15\x14\xFF\xDB\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\v\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xFF\xC0\x00\x11\b\x00\x8A\x00\\\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xFF\xC4\x00\x1D\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\a\x04\x05\x06\b\x00\x03\t\x02\x01\xFF\xC4\x00<\x10\x00\x01\x03\x02\x05\x01\a\x02\x05\x01\x05\t\x00\x00\x00\x00\x01\x02\x03\x04\x05\x11\x00\x06\a\x12!1\b\x13\x14\"AQa2q\x15R\x81\x91\xA1\t\x16#b\xC1\xD1\x17$34Br\x82\xA2\xB1\xFF\xC4\x00\x1C\x01\x00\x01\x05\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x02\x03\x04\x06\x01\a\b\xFF\xC4\x007\x11\x00\x01\x03\x03\x03\x01\x05\a\x03\x04\x01\x05\x00\x00\x00\x00\x01\x00\x02\x03\x04\x11!\x05\x121A\x13\"Qaq\x06\x14\x81\x91\xA1\xB1\xD12B\xC1#R\xF0\xF1\x15$b\x92\xA2\xE1\xFF\xDA\x00\f\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xE6\xEEV\x88\x95\xBA\x01\x1C\xDE\xF8\xD5\xC4\xD0\x02\x0FR\xE3d\x7F\xD1\xFC\x9C\xAC\xC5^\x8FLi!oMi\xF8\x8D\x8FR\xA5\xB2\xB0\x91\xFA\x92\x06\x02{E'c\xA5\xCF'\xF6\x8B\xFC\x88)\xDA1\x0E\xD4\"\a\xA9\xB7\xCC\x10\xAB\x86t\xA49G\xAC\xCAa\xD4\x94).\x90\x12G\xCE\x01R\xC8%\x8C8-5S\v\x1CA\xF1M\xD4f\x82\xEA\r\xF1{\x10m\x89f6aM\xA7\x03z\xB0:A\xA2U\x9DJ\xACJ\x8DN\x88\xB7\x9CDr\xFAR\x94\xF2#8\xC6\xD7\xEA,\xA5`.=V\x92\b7\x12J7\xF6\xFB\xD2Yz\x7F\x96t\x84xE7Og)1O.\xDB\x81!$-\xC4\x9Fbw_\xF7\xC5m\x182)% \xF7\xA4!\xE7\xD0\x8B\x03\xE9\x84r\x93eD\x124\xF2\xD2G\xC3\xFD\xAA+^\xA5?N\x10\x9DxY\x13\x19/\xB5\xF2\x8D\xEAE\xFF\x00t+\e\xF8_u\x84\xAF\x8Fc\xC1\xBF?\x9B\x7F\t\xB5\n\xDB\xD3\x95\x1E\x98\xBA\r\x90\xCB]\x12\xB4\xDF#3\xD6\xA78\xA6\xE8pR\x9D\xC2\xE3\xC4\xBC\e\xDF\xF6\x1D\x7F\x8CP\x96\xBE8N\xD2O\xC1_\x8BO\x9AV\xEE\x02\xC3\xCD*\xD4\x8D\x16\xD4M\x13r*\xF3\x8E[\x97\x0E$\x85\x94D\x9A,\xE3+]\xBA!\xC1qr?\xE968\xBFK\xA8\tM\x98n~\xA1R\xA8\xA2|\"\xEF\x16\x1FD\xD4\xEC5\xA62\x14\xEB]\xD3\xD6\xB2\x87\xBF\xC8\xC6\xA5\x80\xED\xBB\xB9Y\xFD\xC3u\x9B\xC2H\x12\xD5\xBF\xBC\xF2\xAB\xDA\xD7\xC5\x96\x90\x02q\xBFE\xBF+4Z}\x17\xB0=o\xD7\x14\xD8,\x13j]ud\xF4R\xBE\xEE_\xAFR\xAAp\x83F|)(\x92\xC2]\xE5\x05\xC4\x90R\x15\xF0H\x00\xFC`m|\"\xA2'D\xFE\x1C\b>\x85AJ\xF1\x14\xADx\xE8n\x96\xF6\x86\xEC\x81*\xBE\xD5s=#\xCF\xD96+hm\xD9\xD2\xE8\x13^v\rF3\xBC\xA9q\xFC:\xC2\xBC\xC0\xDD \x05\e\xF1\xE8o\x80\xB4\xDA$\x94\x11\x061\xDB\x988v,G\xAD\xD1\xE9\xB5\xB8\xAA\xDFg\xB7k\xFA\xB7$\xDF\xD2\xC3\xE6\xA9\xEES},\xD7\"\x97\x1Cj;Ei\xDC\xF3\xC8+Kb\xE2\xEA)\x1C\x9B{\fWtL\x96\xD1\xC8\xEB\x03\xC9\xF0D\xA3\x95\xF1\xDD\xECm\xCFA\xE2\xBA-\xA6\xDA\xE7\xA1\xFAi\x067\x85\xCC\x99\xABR+\xAE\xA05\xF8m*\x9E\x9A\x1C\x178\xB9C\x8A\x04\xB8\xA4\xDF\xA8+ \xFA\x83\x8A\xEF\xD2tZK\xC9;\xC1\xB6o\xDEy\xF8\f5Fj\xF5z\xC2\e\fv'\xC4\x86\x8F\x89\xEF\x13\xF0\b\xEB\xDA_Hb\x8E\xC8\x15\asUD=Y\x9B%\x12\xA9Q\x16\xB2[\xA5\xAD\xD5on\fM\xDEb\x94\x8B\xEER\x89$%G\xCA\x94\x803:\x85tu\xF3\xD3\xD6\xE9\xF1vq\xE0\x11\x81v\xD8\x8B\xBA\xD8\x1E6\x1DQ\xAD\n\x19\xE8\xA54\xF2?{\xCD\xC5\xF2rO\x9Em\xE1~\x8B\x8Du\xCA\xAB\xD3\xFC$wW\xBD\x10\x90\xA6\x1A?\xE0.)\x7F\xFDY\xFD\xF1\xAF\x8CX]\r\xAC\x93|\x9BOK\xFD\xD2\x18\x8E\xA9\xA7\xD0R\x017\x1D~\xF8\xB1|\x15#r\xAE\xF7f\xBDj\xC8\xDAn\xFD=Y\x8F0\xB1\x04\xABi.\xA1\xB7\x16\xA6\xBD,\xB2\x84\x9D\xBF\xAE3\xB2S\xC9#\xCB\x9A\x16\xA7\xDE\xA2c\x03\x1C\xEC\xAB{\xDA\x1F<\xE9~\xA8v~\xAB\xC1{:QW\x1A\xAF\x05\xC7\xA9NH\x92\x84w\xAF\xB5u6\xB6\xC9\xEA\xA0\xE2#\xE3\xDC\x8Fq\x86S\xF6\x8C\xA8k\x9A\r\xC1Q\xD4\x18\xDD\x03\x83\x88\xB1\x18\\\xC5\xAFBS\x8D\xA5\xC0\x8B)I\v)\xFB\x8B\xDB\x1E\xB5\x10\xDE\x17\x97\xB5\xDB]e\x19\xF0\xEB\x04\xF1o\xFCq1\x8E\xCA\xDE\xE0W\x9C\xB5()\xA4\x8By\x87\x1Dz\xE0{\r\xC2\xEDCH(\xB5\x91\xEA*ah\xF3\x10\x0F\x04\xDF\r\x90\x02\x10\xFC\x87aO;cj+\x1A\x86\xBA\x15]\xE6\xBB\xA9_\x84GbC\x97\xE5\xC7\x10\vd\x9F\x90\x7F\x82\x9Cy,43\xD1\xD7L\xD7\x9B\xB5\xCE\xBB}9\x1F\x8F\x82\xF4\xC8\xAAb\xA8\xA2\x8C\xB7\x90,}\x7F\xCC\xAAo\x04\xEC\x94\x80z%v8\xD3\xBC]\xA8tG\xBC\x8E\xBA-\x06\x04<\xD9\x1Al\xE7\x10\xC4\x16\\C\x8E8\xBE\x89\x17\e\xBF\xF5\n\xC63Vt\x92#bg\xEA7\v[B\xD61\xFB\xDD\xC2\xB2\xFA\xD7\xAFs\xFBB\xD6s\x1Du\xF7\xD5I\xCBYV\x99\xDCR\xA0\xADvJ$I\xF2 \x11\xD0\xBAZK\x8BQ\xF4\x05)\x1C\x03z\xF4\xB1I\r$m\x96\xD7\xC0\xB0\xE3\x1C\x9F\xC2\xD1\xFB3J\xC7\xEA\x0F\x97\xA3\x1A\xE7\x12\x7F\xB8\x83\xB4\x7F\x9E+\x9EU\x88nC\x98B\xC6\xDD\xFEp>.\x7F\xD3\e\xC8\x9D\xB9\xA1y\xA5|&\x1A\x87\x03\xD7)3D\a\x12U\xF4\x82/\x89\xFA!\xE1t\e\xB2\xCE\x82\xE9\x85z\x83+2L(v\x02\xE1\x97jt\x8A\xA3M\xBA\xD6\xD6\xC1p\xAD.\x11\xBD\xB1\xC5\xC9I\x1E\xDE\xD8\x05$\xF2\xB4\xEC<\xAD\eib\x00<\f\x1F\x150\xD3j6\x8Cv\x8A\xD2\a\xF2\xFCF\xE9H\xCC9\\I\xF0hN\xFF\x00\x13\n\b\x90_l\xB4\xBE7#r\xC2J\xF9<\xED8k]4\x0F\xBB\xB86Ms`\x9D\x9B[\xD0 l\xED'\x99>\x8E\xF4\xF4$\x06\x9BN\xE2zz^\xC0~\xFF\x00\xB6=F\x9Ef\x80\x1A\xBC\x8ER\xE0\xE2B\b\xD5\a\x83\x9A\xE3JI\n\a\x9E1q\xE4_\b\xA4Cs\x01\xBA\x88P\x1D6\x01&\xD7\xEA/\x81\x11\e\x84Fq\x94N\xCB\xB3\x14\x84\xB7\xB5W\xF9\xBFLLE\xD0g\f\xA2:r\xA4=S\xA41\x97\xA5>\xDC\x17\xDF%\xB8\xB3]6CO(\x10\x82\xB3\xF9\n\x8AB\xBE\r\xFD1\x99\xD5\xEF\f&\xA46\xFB3a\xCD\xBA\xDB\xD3\x95\xA2\xD1^\x1F#\xA9\x89\xB6\xF1\x83\xE62\a\xC4\\z\xD9UWa;O\x9A\xF4yI\xEEd2\xB56\xE27\x03e$\x90z{\x10F(\\8\x02\xDE\n.\xC2\x01\xB9VK\xB2\x8D3\"f\xBA\xF4\xD4j\x0Ekc(\xE5\x98\x88\x12\x1E\x99)\xA76I(IY\x8E\x95\x84\x90\x16\xA4\xA4\x90\x93\xCA\x80! \x9E1\x91\xD5i\xAA\xDF\xB5\xB4\xB6\x0E7\xC9\xCD\xBC\xEC2~\xC3\xA9\b\xF5=\\Q\xC6\xE7<\x13ka\x10\xB3\xD6_\x01\xA8\xF9.\x9BG\xA9R\xDD\xCD5\x95\xE6\xA9N\xD4\x18\f\xF8J|\x87vD.\x80\xA2\x13\xB5\x92\x8F%\xEE\t\xB7\x04\xE2:h\x9C\xFD\xAD\xDC\x1C#\x01\x97\a\x92\x06O\xC4\xAD\xF6\x95\xA8\xD2i\xF4\x0Eu\xEF,\xA4\x928\xB6z\x9F!a\x85K3]I\x15|\xC5>[7\xF0\xCE<\xAE\xE1%!;Z\x06\xC8\x16\x1D<\xB6\xC6\xD6&\x0607\xC1y-d\xEF\xAA\x9D\xD3\xBF\x97\x14\xD2o\xCE%T\x91\xCBEu\x830\xE5\xEAt\xDAE\f\xA9\x12&\xB4\x98\xF2\x1D\x10\xCC\xB3\xDD_\x94\xA5\xB0\b%]\r\xC7LP\x96&n\xDE\xF4^*\x87\xC9\x1Fd\xCC\x1F\x1EQ\xCBC\xA6H\xC94\x8A\xEBYu\x99\xB4\xE4I\x1E\n\xAE\xD5B\x94\xA8\x82M\xF7m(**\xF3\xB6U\xE8R,z\x1E\x82v\xB1\xB3\xCB\e_\xEA,\xAA\xCA\xF1M\f\x8E\x8C\x90#\xCD\xFC\xF0\x8CZ\x9D\"&H\xD1\x9A]1-7\xF8\xA5Dx\xE7]?[,\x91\xB5\xA4|n\xE5G\xE3n4\xB0\x13$\xC5\xDD\x06\x16\x12F\x81\x10m\xB2s\xF8\xFC\xAA\x15\x99\x9FS\x95w\x94\x14y\xF6\xC1\xB7X\x9C\xAB\x906\xCC\n\x15Gwk\x83\xD0t8\x13\tE&\x18DZ\x04\xE4\x84\x04\x8B\x03\xB7\xAD\xF1m\x04\x90\x10T\xEE\x89\x9B\xD7Au\x89Q\xD4\x85=\x1D\xC4\xBA\x80\xE1\xE3rHP\xB8\xFD9\xF8\xC42D%\x05\xA7\x82\x9A\xC2XA\x1C\x846\xD7\xEC\xC7I\xCD\x1A\xAFY\xAEe\xEAji4\xCA\x82\x19SpR\x00K\x044\x84\xA9\t\x03\xA2n\x9E>-\x8C5%5E,]\x85S\xB79\xA4\xE7\xC4\\\x90~D-\xFC\xEE\x84\xF6r\xC0p\xF6\x83o\x03\xC1\x1F0\x9C4\x8B_\xEB\x1AQH\xACR\xE1D\x84\xEC*\xA4\x98\xD2\xA4&K\tz\xEAgv\xC1\xB5wA\x17Y6RM\x88\x04\x11l\x0F\xD44\xB6\xD6\xBD\x92\x17\x10Z\b\x166\xE7\x94B\x8A\xAA(\xC3\x9B(\xE6\xDD.\x91j\x16\xB0g|\xD3\xF8\x95VeFjb\xD7\x1D*u\xE4\xAD[]\t&\xCD\x95\xFA\xD8\x92m\xEEon\x05\xADP\xD1AG\x18\x86!k}\xFCS+\xE7\x99\xED\xDF\xFB]\xC7\xA2\x14\xDE\xF6\xC1\x81\x85\x9F\xE5[\xDE\xCD}\x94\xA8\xBA\xBF\x92\x1E\x9DQ\x8A\xE8^\xE2\x92\xFBN)+A\xB7\x04z~\xE0\xE0\rUl\xB1I\xDC\xE1i)\xA8\xA1|#<d\xA0^\xA3eZ\xEFg\x8DT\xAAQ`\xD5d\xC6\x91\x14\x82\xC4\xD8\xEB-)\xD6V7$\x9B\x1E\xB66? \xE0\xBD3\xD9U\x18y\x1C\xF4Ag\x8D\xD4\xB2\x96\x02\xAD\x86\x86\xE9\xC5z\x8D\x912\xADg6W\xA4\x05\xE6I\x0EJ4g\xAE{\x8A{\b*/\xAC\x92|\xCA+\x01\"\xC3\xEA\xF5=4qS1\xA0\x9D\xBD\xE0>\xA7\xA7\xE5e\xABj\x89\x01\x81\xD8'\xEC\x9D5\x92\xA9'5\xB9*xRP\xDB\xC2\xE9a\\\x04\xA0yR\x91\x7FD\x80\a\x1E\xD8\xB5\ff!b\x10\xE7\xB8;\xAA\xAA\xB5\xBA\x02\xCDI\xDB$\xDB\x8E\xA7\x16\xF7\x8E\xAAfH#\xB2\x17At\xA5d\x03k\x8B_\x03\"6Z\x17\x8B\xA9D\x1A\xA2X\xB2\x94\x02S`-\xEB\x8B\xA1\xC8[\xE2'\x85\xEAff\tmM\xA4\x90:\xF0p\x8B\xC3Re1&\xE9\x1D\r\x0FW\xEBq\x18\xF0_\x88%\xD5\xA5\r\xC7Q$8\xB2xO\x04\x1El#\x17\xB9\xBF\x18\xCEW\xD4\xF6\x8D;N\x02\xD5i\x14\xC0\xD5G\e\xD9\xBBq\xB5\xBC~Y\xCA\xD3^\xCB5\x1AMN\xA2\xDC\x98I\x80\xFA\x1Dq\v\x8E\xE1\t[E+)Zv\xDE\xE0\x82-n\xBC`[^6\x8B\x94Zzg\x19e0\xB4\x01\x7F\x97\x90=S<\xE7e5\t\x10\x16\xF2\x93\x1D\xB7\v\xC8\x8E\xA5\e]#y\x88\xBD\xB7X\x01\xEF\xC6,4\x87\v\x84\nh\xA4\x89\xDBd\xC1\xE6\xDE\xA9\x13IJ\x90.\xAD\xA4(s\xF1\x89:(:\xAE\x9CvG\xCF\xD9W+\xE4\xA57'9Qc\xC7,\x03\xFD\xE3\xC9m[\x82E\xD1\xB4\xF2U\x7F#\t\xE7\x19i\xE2\x90\xBC\x80\xD2\xB61L\xCD\x8Du\xC6\x10\xBF\xB6\x1E\x9D\xCA^\xAE\xE4\xAC\xE1L\x10\xAAO\xD6Jb\xA2\x14\xE8\xE4\xC6RZ\tXZ\x95\xEBp\xE8\xE1\"\xE9\t\xF76\xC6\x87\xD9\xE0\xF2\x1C\xC6\xFE\xDC\x9B\xF9\xFF\x00\xA5\x9D\xD7\xB64\t\x1EM\x9D\x8Cy\x7F\xB4\xE9\x98\xF5>]r\x9D'2\xCB\xA7\xF7*Zc\xD3\xA2S#,\xBA\x86b\xB4N\xE2\x95\x00<\xAA^\xE5\xDE\xC2\xF7M\xF1\xE8\x90\xD3\x86\x90\xCB\xF9\x93\xE6W\x98O.\xF7\xF7z`]0\xD63I\xCC\xB9.}Uq\xCB\x1D\xF4\x87P\x86;\xBD\xA9i\xB4\xD8!)\xF8\xDBc\x7FRI\xF5\xC7$\x8F\xB3xkN,\xA4\x04\x91\x9EUd\xAB\xD6^f\xA0\xF2[yhE\xF8\x01d\f5\xD8<#1F\v\x01\xB2\x1F\xB6\xBD\xB6\xB7Q\x8C\xE3J>BS\xE2\xD4\e\xDB\xB8\xDB\xE7\x13\xF6\x98\xB5\xD4{\x05\xEE\xB67\x01\xD7\xA2\xAAB\xEE\x11p\x94\x0F\xCCOL\a\xA8\xA9\xBB\xBB6\xFCQ\xAAz\a:\x03P\xEE/a\xE6S\xFC9\xA9\xA3S\xA3\"1\x02bJ\xDC.\x8E\vEV\x1D\x7F6\xD4\xF5\xF4\xDC#\xC52\xE0[\xB4\x05~\ngD\xF1+\x8D\xAD\xC7C\xEAJH\xB2\xDBR[r[\xC8SE!\xC5-*\xDCH#v\xDF\xFB\xBD>\xE7\x15\xCB\\\r\x87*\xF4R\xC0v\xBECf\x0F\xA8\x1D\a\xAD\xAD\xF1Q\xC9\xB2\x95.B\xDE_\xD4\xE1*?\x1C\xF4\xC5\xB6\xB44X,\xC4\xF3:\xA2WJ\xFEI\xBA\xF0\xCB\x81\xB5\xA4\xA9!i\x04\x12\x93\xD0\xDB\xD3\x0F\xB5\xC2\xAE9\xBA\xBD=\x89\xB5*\x8D\x97r4\xF3'.\xB0\x89,V\xCC\xA6gI\x8CJ\x18m\xE0\x86\xB6\xC7u \xA9\v\x05)\xB9W\x90\x8E\x0FP#\x8A\xA8\x1E\xF7\r\xA7\x90\x8D\xD2\xCC\xC60\x977\x17\xF8'N\xD1\xF5\x8A\xBEd\xD76\xE0\xB1%\xFA\x92it\xF4\xA5\x96\x90\x90;\xB7\x9El8\xFA\xAC:(\xA7\xBA\x1E\xC2\xC0zcQ\xA5G\x1E\x9B\xA6\xBA\xA6Q\xCF>y\xB0\x1F5\x99\xD4\xE4\x93S\xACm4G\xFC\xEAS\xC4|\xB4\xEC\x1At\x14L\x8C\xE4\x12\xEB+\x02;\xED\x80B\x10\xB2\xDF\x02\xFF\x00O\xA8\xE9pol^\xD35\xA6j/{\x03v\xB9\xB9\xE6\xF8B\xB5-\nM9\xADyv\xE0q\xC7T?\xD4\x1A\xF4\xE9Q*\x11\x1F\x84\xA8t\xC8i\xEEc\xA8\x9F+\xA9\a\xC9ok$^\xDF\xE28\xD2\xC5\x17\xEE\xBD\xC9Y\xE2\xEB\x90\xD2\xAAmfF\xEA\x9C\x83\xE9\xB8\xDB\x15\xA6=\xF5\xAC\x85\xBD\xC0\xA3\xA0\xDB\x19PQ%\xB6\x1CuM\x96\xCCtr\xB7V\x10\x00\xF98\x8AI64\xB8\xF4Vi\xA0uL\xCC\x85\xBC\xB8\x81\xF3*mU\xA2;\x1A\x1C\x14\xA1 7b\xBB$rU\xD0\x13\xF6\x18\xCE\xB2P\xE7\xB8\xBB\x95\xE9\xF5\x9AS\xA1\xA7\xA7dc\xBA.}\\x?\x00\x9BSMz2\xD0RU\xDF\x02\bROC\xF1\x89;at0\xE9\xCFh\xB1\xC9)\x92\xB6\x16\xCB\xFD\xD2\x88U\xBD\xBE}qj#\xB8nY]D\x18\x9F\xD9t\t\xAC\xE2t\x1Dm\x8D\xC3\xC8'\xA5\xFAbX\xBFX\xBA\xE1\xE1\\\x1E\xC42\xE3W\xB33\xB4\xC9\xCBb\x99Jx\xED_x\xA1g\xDCH+\xDA\x94\xF5\xDER\x95[\xA0\xE3\xDF\x83vJ#\xF6\t\x9A8*\xA9\xA8tg\xB2'\x05NP\xFDk:U\xB5+R\x19\xA1\xCD\xA9SK\xABe,C\x8E\\!\x83\xFD\xDA\x12H \xA4lJ.G&\xE6\xDDp\xCDn\xA28)\xE1\xA1i\xCF'\xCB\x18\xBF\xA9\xE3\xD1I\xA3S\xBEi\xA4\xAC-\xC0\x16\x1Ef\xF9\xB7\xC1/\xD4\f\xE3\x02$\xEA}\x1E4\x05S\xEBT\xFAtV*\xE5]\xE8q\xC9+e\n>W\x14JR\x90\x12\b\x00\x1D\xC4\xDE\xF8\x17\xA1m\x8Ei\x1D\xD4\x8F\xE5\x18\xD7C\x9D\x04c\xA5\xCF\xD9\r3\xDB\xCF\xCB\xA7\xA6\xC0:\x9E\x8A\bQ;O\xCF\xB7\xA7\xEE1\xE9t\x92\x89\x06\x17\x99T#b\x90\x17*\xE3]\xA4\xED\xAA=\xC7S~\xB8\xEC\xB0\x878\x92\x16\x82\t\x7F\xA6\x14A \x9B\x01\xC9\xC6)\xAD\xBA2\xA7\xFA3\x93\xE5\xE6<\xF5\x05\r\xC6[\xE9a+\x90R\x94\xDE\xFBG\x03\xF7#\x1456>:W\x109\xC2\xD7{\"!~\xAF\e\xA56\f\xBB\xB3\xE41\xF5\xB2\xB5Ze\xD9O2jM\x1E\n\xA3\xD3K\xB5\x04G\xF3\xC5u\xC0\x85\r\xB6\xDF`y;I\x00\xFC\x91\xEF\x8CC\xE5\x91\xF3=\x90\x8B\x8B\xAFy\x8Am*\x8E\x8A\x9D\xDA\x94\x96yh\xC76?\x95\x01\xED5\xA3u\r\am\x86+\x10\xFC\rQ\xF6\xD2Xl\e\xDD&\xF7?\xA0\x1C\xFE\x98\xB3J%t\xDD\x9C\x82\xDDP\x9D~\xAFM\xFF\x00\x8B5\xFA{\xB7\x12v\x0F^O\xC8*\xB10\xA9J\xEF\x14|\xCA\xE6\xDE\xD8\xD47\x18\v\xE7\xC9\xEE\xE3\xBD\xDC\x94\x98\xF9\x96O\xB9\xBE\x1E\x15Eb{?\xE9\x8EB\xAD\x96\xE5gY\r\xB1\x19\xB4\xA9\xD7\x83\xB3T\xD9\t\x04\x02\xAD\xA8\xE4\x00H\xEA}p6\xA2\xA2X\xDF\xB5\x9Fdf\x9E\x96\x19\"\xDD'>\xA8\xE5\xFE\xC9\xA8\xD9\x17R(\x8Dd\xFA\xCA#e\xEA\xE8\xEE\xDC\x94\xA5\x17\xC4v\xD4\x9B\x87\x10\xA3\xE67M\xEC\x0F7\xB7=q{N\xD5\xA4k$d\xE2\xFBE\xC7\x9A\xA3\xA8i,q\x88\xC3\x80\xE3c\xD6\xC9\xA3R5\xE6.C\xAA\xD0\xE9\x94X\xD2#\xE4(2C\xB1b)jK\x93\xCA-\xDE:\xE9E\xB7)~\x97 \x01kq\x86\xBBO\xAA\xADw\xBC\xCE-\xBF\xE8\x15\x86\xD6\xD3Q\xB4\xD3S\xE7f>i]gVrGhL\xE3\x1ERY\xA9e\xAA\xDDI\x86`\xC8L\xB8\xC9Z%\xBA\x9B\x86\xDF\x0E6n\x16R\x9D\xAA\x04sd\x9B\x8B`\x8B4\xCFp\xED*X\xEB\x800\b\xB17<rG\xA2\x1C5'\xD7\x18\xA9f`\x04\xBB$\e\xDA\xC3\x9E\x01\xF5Qz\xCE\\\xADG\xABD\xA3Di\xC9h\x85\t\xC9N\xC4Jv]$\xABr\x8FP\x15\xB0$\xD8\x91\xF4\xD8X\x8B\x92Zv\xA3\v[\xDA\xC8\xE0\x0E\xED\xB9\xEA\xA2\xD4\xB4\xA9\x8B\xBB(\xDA\\6\xEE\xC7D\x16\xCC\x90\xD1\x16\xAC\xEBo\x8E\xE5V\n\tP\xB5\xC1\xE4\x11\xEE9\xEB\x8D\x98|re\xA6\xEB2\xC6=\x8D\x01\xC3*\x05\x97\xA8\xC9\x9F-\b\xEF\x80$\xFERF2t\xF0\xDD\xC1\x1A\x9E]\x8D7]B\xFE\x98\x9A\t\x06\xA1^\xAAf\n\x9CF\xE4\xB1\x19\x80\xDBd\x8B\x82\xA2A\xE7\xF6\x183\xAB\x86Q\xD21\xA0w\xDC~\x8B)\xA6\xCF-~\xA0\xFB\x1F\xE9\xB0[\a\x93tx\xD6\xAC\xE5J\xEC\xE1\xAE\x99J\xAE!\x94Q\xF7KT\x96\xE3\xA4\x05\x14\xBC\xC2\x81Jz\x0F\xA9\xB6\x8F\xDD8\xF2\xDA\xBF\xFAy\x85CF\b\xCF\xAD\xED\xFC\xAFv\xD0\xA8]\xAE\xD2\xBA\x84\xC9g\xB4\xD9\xA4\xF0\x05\xAF\x9F\xFCW0\xFBgv\x84\xA8v\x82\xD4\xBA\x8D~f\xD6b0\x9F\v\n*\r\xD2\xCBc\xD0\x1FS\xEE}M\xF1\xCAv\xB9\xEE\xED\x1E2~\x83\xA0F5\x9Fw\xD3\xA9=\xC2\x94\xDD\xB1\x82/\xFD\xCE?\xA8\xFF\x00\x03\xC0\x05Yd\xAC\xA9#z\x01\x82\xA0Yy\x8C\xAE\xDCV\xB4yH=9\xC3\x82\x85Xn\xCB9\xE2%:\xBBP\xA2\xD6\x18\xA7I\xA2V`\x1A}A\xD9\xF1\xDEt\xB0\xC2\x9EJ\xD6Q\xDDr\x92JB\xAFc}\x80p0*\xB6# \xB86 \xDF\b\xE6\x9D \x04\xB4\x8B\xE1\x17u36Qh3\xD3A\xC9\x91\xA1S\x11\x1A#\x8E\xAA\xA6\xD9R\xEE\xAB\x03\xDE\xA8\xAB\x9EGN/\xCF\xBE\x19E\x14\x92\xBE\xEE\xC98N\xD4&d-hf-\x94\x1E\xCEB^l\xCBj\\h\xD2%\xC8K\x89u\ta\x05E\xB7\a\xD5\xC0\xE8,I\xBFKc\xD2\x19]\x19\xA6\xDB1\xDA\xE6\xD8\x1F\x1F\v\xFCV\x05\xB4r2\xB3t\"\xEC}\xCE8\xB76\xF8\x14\x9B\xB3\x8DI\xDC\xAF\xAA\x91\x9A}\xAF\xF7\x96[|\xECX\ak\x856\xB8\xF9\xB5\xFD}qNX\xD9,\x05\xAD\xE0\xE5\x10/0\xCA\xD9:\x8C+\x14\xF6gv}v\xB1V5t\xD2\xDC\\_\n\x14Sp\xA5n\xB9Q\x03\xEA\xE3\x80H6\xE7\xD0\xE3!QA\xB1\x8C\x8C\xB2\xE0:\xF7\xFE\x16\xBA\x9BS\x0Es\xA4k\xB2#\x16\xF4\xEB\xE6|<\x1079G\xA77Se\x96\xD8\x8D%\xB6XKiq\xD4\x82\xA2.M\xF9\xFB\xDF\xF5\xC6\xAE\x9D\x929\x9B\x9CrVR\xA6a\xBE\xCD\xE0`!\xAE\x9D\xC3i\xDA\x9B!IR\xD4O\t\x06\xD8\x96\x9EG6F\xE1\v\xAEq\xEC\xDC\xBA\xF9\xFD:\xEB\xF4\xFAm\"},\xBA\x94Hs\x95$\x9E~0o\xDA(\xDD,\x11\xC8\xDE\x02\xC5\xFB-;b\xAB\x9E'\x9C\xBB(U\xFDR\xF3\x93+\xCC\xF4\x98l8\x92\xB8\xEC\xDF\xCA}\xD2\xAE\x7F\x9Cy\xE5DW\f\x0E\xF3\xFB\xAF\xA0\xBD\x9A\x98\xC4\xF9%i\xEA>\xC7\xF2\xB9oUjE^p\x89\x19\nu\xE7\x14U\xB6\xFD\x00\xE4\x92O\x00\x01\xC9'\x801\xD6\x80\xDC\xAAZ\x8C\xCE\x99\xDD\x98\xE4\x9B\xA8\xFC\x96\xD0\xC3\x85\xB4\xAC:A\xE5\xC4\xFD'\xED\xFE\xB8p\xB9\xCA\x06\xF0\x1Al2\xB4\xE1\xCA5!\xC8\xF5\xB9\x94*\xFB\x0F#\x82\xCDJS\x97i\x11\x9Fl\xAC(\x9E\x84X\x8B\x11\xE8}1\xCE\xC7\xB7\xEE\x0EJ\x91\x93v\a\x7F\xDD\x12W\x99cQf\xD4b\xD5T\xCE`\xAETX,\xCAm\x95\xA90\xE9\xA0\x90l\x14\x82\v\xAE\xA4\x81\xEA\x10\x9B[\xCEz\x1A\xD3i#\x8EM\xA7\xA76C\xEA\xE7|\xED\xED\x0F\xC1Gs\x06l\xACe\xC8QX\x839Q\x14\xF0QS\xB1^I+o\xD0*\xC6\xE2\xFDll~1gQ\x8D\xAE\xDB\xB8duP\xD1o\x8Fv\xD7`\xF4Hr]jT,\xCB\x1A\xA8\xFC\x82\xE9S\x9B\x96\xBE\xAA$\x82?\xCF\x13\xD2\xC4X\xDB_\n:\xBBH\b\xEA\x9D\xEB\xB9\x9EK2\x1CS\x12\\\xE6\xF6\e\xB8\xE7\x04\x9E\xC8\xC8\xEF*t\xE0\x80\xA1\xD33\x14\xB7^%O\xAA\xF6\xB6\a\xBEa\x19\xDA\x116\xC2\xD28K2\xF5qt\xC9(}\xA5\xEDP\xC58e-!\xEC6!A<\"F\x96\xB8a\x1D\xF4\x9F\xB4\x85SO\xEBlH\x831\xC6]X!J\n\xB76\xE3\xF9\xC1Q\xA9\xBD\x94\xEEc\x80p\xF3#\xA9}\x9D\x86\xAE\xBD\x84\xB8\xB2\xF8\xB8\xE53k\xB6\xAF\xD5\xF5*\xBE\xCDB\xB1(\xBD%m\x8D\xEBY\xE0\\\x9E\xBE\xDDq\x8E\x9AN\xDEG?\xE4\x17\xB1\xB6\x99\x9AU<P6\xF8\x19?\x94\x1A\xABW\x19\x8F\x11\xC8\x10\xAF\xB5\xCF\xF9\x99\x00X\xC8WP>\e\a\xA2}m\xB8\xF3`!-$\xDDg\xDF3{\xD7\xC9*6I&\xE7\xD7\x0FT\t\xBEW\xCB\xE3\x8B\x89\xD3.\xAEB*#\xC3\xC8\x11\x14\xA4)%\xF2\t\xD8\x9Brx\x04\x8Fk\x8F|_\xA5\xDE\x1D\xDC\xE4\xE1E k\x87{\x85\xB0\xD4\x8D5*j2\x82V~\xB5\xA7\xDF\xD8`\xBBj\x05\#{8\xF9\xEA\xAB\x98\x84\xC7s\xF8\xE8\x9B\xE4I[\xE6\xEBYs\xE4\xFA`|\xB5\x05\xE6\xD7\xBA\xB0\xD6\x06\xF0\x12\x8AuEP\xDFB\xAEJA\xBD\xB1b\n\xAD\xA6\xC5E,A\xE19?SD\xB2\b\x16\xFB\xE0\xB0\x94?*\xA8\x88\xB57\xC8h-\xD2G\xAE!{C\x8D\xD5\x96\x93d\x91\x0E\x14\x9E.0\f\x16\x9F\xD4\x14\xE4](nIh\x85)D\x01\xC8\x1E\xA7\x16\v\xC3E\x93\x03sq\xCA\x94J\xA8\xB5U\xA3Fx\xA8\x99*IK\xDC\xF4P\xE3\xA7\xB1\x16\xC6i\xE1\xCC\x94\x8E\x8B\xD0\xC5Du\x94,.\xFDV\xB1\xF5\x1F\x9C(\xC4\xA56\xCB\x83\xB8J/\xD3s\x8A\vW\xDF\xD8b\xC3M\xF2V6f\x86\e\x04\x89\xC5)j\xBA\x94V\xA3\xEAq\"\xAA\xB5\x80V\xB0\a$\x9B\f7\x93\x84\x94\xF2\x99\x06\x8F\x16\x96\xA5=\xE1\xDA\x92\x86\x8A\x94\xB7\x1DR\x94\xBB\x03\xC6\xD1\xC0\xB9)\xFE>pT40_\x83\xFEq\xEA\xABou\xEDk\xA85\xF9\xE7\x15\xB7\e\xE5X\xB2\xF8O8\x85\xCF\xCA\xEA\xF3\xBB\x11\x87\x90\x92\xF6\x87\x8Aqf:\x873\v\x84]l\xEF\xFD\xCE/{\xDF\x8Af\xD5\xAFz\xBF1\xFD\xF00H\xE1\xD5>\xCB\xE5\xCF\xBE9\xB8\xAE\xA5\xB0j\t\x8C\xCA\xDBZJ\x81;\x85\xBD\x0E\x19$e\xE4\x14F\x96\xA8#\xD71\xC2\xE0\xA4\xAF\xAD.:\xA5$\x10\x0F\xBE\x1E\xD6\x90,\xA9\xCA\xE0\xF7\x97\x05\xAF\x0E\x00\x81\xC2\x89g8V\xF2I}\xC3\xEC\x12_0\xDC\xA4\xB3\x9Cs>\t,=0\xD7q\xC2K\xCE!If\x12K\xED\xCE\x15\xD2R\x9C\xD1\x91$ex\xF4\xB7\\\x92\x87\xFCz\x94\x94\xA5()\xDA#l\x9F\xBF\xFCA\xFBb\xBC5\x02R\xEB\x0E?\xFB\xF8S\xBE'0\v\xF5RZ\xAE\x85\xD4i\xB4\xD7\xE6\n\x94WP\xDCg\xE5\x01\xB5#\xAD,\x82V=l|\xAA\x02\xE0\\\x8C1\x9A\x83^#\xB7\x87\xD5=\xF4\xE5\x82\xF7M\x993J&g*,\x8A\xA3S\xE2\xC4\x8C\xCA\xD4\x82\x1D$\xAC\x94\xED\xBF\x1F%i\x00^\xE4\x9E\x98\x96Z\xC1\x13\xB6[)\xAC\x84\xBD\xBB\xAE\x92'M\xE67\x9F\x8EV\x93)\x96d\x04\a\f\x80\x14\xA4\x04\x16C\xA0\xDB\xAF\xD2G\xEAq\xD3X;\x1E\xD8\x0F\xF2\xF6\\l%\xD2vkns\xD3)Y6\x96\x89\xAFKnB\x14\xF8f\xC8l\x8F\xA8(\xA4\xDC\xFB\x84\xDF\xF5\xC3 \xADl\xEF\xD8\x05\xB1u$\xB4\xCE\x89\xBB\xCA\xD1\x95t\xF5\xFC\xD7D\x9D:4\xA4\xA1\xF8\xEAR[\x8A[$\xBC\xA0\x8D\xDBA\x1C\x02z\v\xE2I\xAA\xDB\v\xC3]\xD568\x1D+K\x9B\xD1$\xCD\xB9*^QD?\x12\xB0\xB5\xC8\xDC6\x84\x91\xB5I\xDBq\xF3\xF5\x7F\x18\xECUM\x9A\xE5\xBD\x13e\x85\xD1[r}\xACh\xD5b\x8BN~S\xCE\xB0\xAE\xE5Km\xC4\xA2\xE6\xCBBJ\x94\x9F~\x80\xF3k\e\x1CB\xCA\xF6Hl\x13\x9FN\xF6r\xB4\xE4],\x7F<\xC3\x86\xFB5\x16b\x99\x15\x11O\r\xAD\xB5(\xA6\xE9B\xB7\xF1\xE9\xE7\xE9\xD7\x8C*\x8A\xC6\xC3p\xE1\xD2\xEB\x91B\xE9xL\x19\xC3+/)U\x11\ro\xF8\x8D\xEC\xA1\xE0\xBD\x9B8U\xF8\xB5\xCF\xB6\x1D\f\xA2V\xDC&I\x19\x8C\xD8\xA6<N\xA2X:\xE1$\xAC\xF7iL\xA0\xDE_\xA5iJ\xD1{Nu\xF5n#\xA8\xDB\x0F\x9F\xE4\xE3'\xA4N&mC\x81\xE0\xDB\xEE\xB4Z\x936:\x01k\\\x02\x8E\xD9\xD7JX\xA7i\xBE|\x9D\xB9e\xF8\x99~\xA0\xFAw\xA3\xCA\x84\xAB\xBF\x00\x0Ey\xB8J\xF9=\n\x87[c=A\xA8\t*\xA9\xE3\xE7y?\xFA\x84b\xBE\x902\t\x9Do\xD3o\xAA\x80\xF6C\xD3\a\xF3\x96\x95\xBD%\f)\xD4?S\\1\xB1\xB2\xAB\x12\xECRI qas\xF6\xC4\xDE\xD0\xEA\xD1\xD0\xD5\x16Hm\xDC\xBEO\xAA\x83J\xA3\xED\xA9D\x9F\xF7[\xE1\x84\xD7;\"\xAAGo\xE9\xD9M\xB6\n\xCE\xDF\a\xDD\x00o\xE5\xA6'\xD3\xF4\xC5\xB9\xF5\x10=\x9Cmq6\x16i\xF9\xB8*\xB4\xB1\xC6\xED\\\xB3\xF6\xDD\xDFb\xA7}\xBF\xF4Q\x9D2\xD1\\\xB5Qd\xF7\x9E*\xB8\x88\xE5\xD0\x9D\xB7\xDB\x1D\xDE\b\xF8)#\xF48\x05\xEC\x96\xA8\xFA\xFDBV8\x10\x1A\xDB\xFC\xC8W5\xB9!4\xEDd|\xEE\xFE\n\x13vb\xA6FgJ\xF3.c\x99\nD\xD84Y\x8B\x9711\x80\xEF\x12\xCAXAQI<n\x02\xE4\\\x80H\xF4\xC6\x97Y\x986\xB6\x18\v\xACd\xC0\xF5%S\xD2{\xB4\xD3\xCBo\xD3b\xB6v\xD4\xC9\xF1\xE8\x14\xAD9\xA9\xC3aq\xE2V#;-\xA0\xE5\xB7mZ#\xB8/\xF3g\x05\xF1\x1F\xB3U\x9E\xF2\xFA\x98\xB7\\\xB0\x81\xF2$\x7F\v\x9A\xD0\x1D\x94\x12\fn\x04\xFD\x91c6\xE4WF_\xCE\xD3$6\xF2Zi5\t\x01\xB5\xB46\\\xB2\xF8J\xC2\xBA\x93p\xAF\x8EF\x042\xBCv\xF1\xB1\xA7\x97\x01\xF5\v#\xEAF\xB6\x9D\xC6\xD9\x11\xEE\xF9\x840\xEC\x8B\xA7\xCE\xE7L\xA6\xB5\xB2\xB0\xD2\xD9\xAD(\a-\xF4\x9F\x0E\x82\x9E~\xFF\x00\xCE\x0E\xEB\xD5\x1E\xEC\xE6\xB8\xFE\xE0G\xC9g\xF4h\x84\x8D\x91\xCE\xE1\xB6\xFA\xA1\xEFk\xEC\xBA\x8C\xAB\xAA\xEDSP\x00\xEE\xA9QI\x03\xDC\x85\x1F\xF3\xC5\xDFg\xE7\xF7\x9A>\xD6\xFC\xB8\xAAZ\xC0\xDBVZ\x06\x00\x1Fd\x10\xC6\x95\x04Y\x84\x92\x90\xE6=D\xCC\xF9\xBD\xBA[u\xBA\xFDF\xAA\xDD-; \xA2d\x958#'\xCB\xC3`\x9F(\xF2'\xA7\xE5\x1E\xD8\xAB\r$\x14\xFB\xBB\x16\x06\xEE76\x00\\\xF9\xF8\xA9\x9F4\x92X\xBD\xC4\xDB\x8B\x9E\x13\xEDO_u\"\xB5\x02|)\xF9\xEB0L\x87=\x8F\r-\x87\xAA\x0E)\x0F\xB5\xCF\x91`\x9ES\xE6W\a\xF3\x1F|E\x1E\x9FG\tk\xA3\x85\xA0\xB6\xF6\xB3F/\xCD\xBC.\x9C\xEA\x89\x9E\bs\xC9\xBF\x99Ir.\xB5g\xED1\x89\"&R\xCEu\xDC\xB9\x12B\x8A\xDD\x8FL\xA8:\xC3kQ\x16*)I\xB5\xEC\x00\xBF^\x06\x1F=\x15-Q\x06\xA2&\xBE\xDCnh6\xF9\x85\x10{\x9A,\xD2Bo\xA7jVl\xA4\xE7O\xED|<\xCBV\x8F\x9A\xBB\xC5;\xF8\xDA&8&oRJT\xAE\xFA\xFB\xAEA \x9B\xF48\x99\xD0\xC4\xE6vnh-\xF0\xB0\xB6<\xB8\\\x0E \xDC\x14\xB78k.{\xD4\x1A34\x8C\xCD\x9C+\x95\xFA[\x12W1\xA8u)\xEE>\xD2\x1FQQS\x81*$\x05\x1D\xEB\xB9\xEB\xE6>\xF8L\x86(\xCD\xD8\xD0\x0F\x90\x01p\x92y)\r\aR3VV\xCB\xB5z\r\x1F1T\xE9\x94Z\xBAvT)\xF1%-\xB6%\xA6\xD6\xB3\xA8\x06\xCB\x16\xE3\x9C5\xF4\xF0\xC8\xF6\xC8\xF6\x02\xE6\xF0H\x04\x8FC\xD18=\xC0X\x1C,\xCDZ\x91\x9A\xB3\xCC*\\<\xC3\x98ju\xB8\xB4\xB6\xBB\x88,\xCF\x94\xB7\x93\x15\xBD\xA9N\xD6\xC2\x89\xDA,\x84\x8B\x0FD\x8Flr\x1Ah)\xCB\x9D\v\x03K\xB9\xB0\x02\xFE\xB6\xE5p\xBD\xCE\x00\x13{'\xCA\x8Fh\rJ\xAB\xC2\x93\x0Ev{\xCC\x12\xE2\xC9c\xC3>\xCB\xD5\x17T\x87\x1A\xB1\e\x14\t\xE56R\xB8\xF98\xAE4\xEA6\xB88B\xD0A\xBF\xE9\x1C\xF8\xFA\xF9\xA9\xBD\xE2n7\x9E-\xC9\xE3\xC3\xD13\xE5\x8DO\xCD\xD9*\x9B*\x9F#\xCC\xB5J4)N%\xD7\xA3\xC1\x96\xB6\x90\xE2\xC5\xAC\xA2\x12y\"\xC3\x9F\x8CO5,\x15\x0Ek\xA6`qo\x17\x00\xDB\xD1F\xC9\x1E\xC0C\x1CE\xD3~j\xCE\x15\xBC\xF1W]S0U\xA6V\xAAKBP\xA9s\x9ES\xAE\x14\xA4Y \xA9\\\xD8a\xD0S\xC3L\xCE\xCE\x06\x06\xB7\xC0\v\x05\xC7\xBD\xF2\x1D\xCF7>i\xA3\x16\x13\x17\xA3\x8E\x94\x97\x9Cq%\x98I,\xC2If\x12K0\x92Y\x84\x92\xCC$\x96a$\xB3\t%\x98I,\xC2I\x7F\xFF\xD9"
So the above data should display the above poster.
But when i add that code
<img src="data:image/gif;base64,**HERE**" />
The movie poster isnt shown, does anyone have any idea why?
I can see one possible error. The image link you have posted in .jpg while you are setting mime-type as gif. Please check with mime type as image/jpeg.
EDIT:
I tried the following sample code, works fine:
<%
require 'open-uri'
raw_img_data= nil
open('http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w92/s2IG9qXfhJYxIttKyroYFBsHwzQ.jpg') do |f| raw_img_data= f.read end
base_64_img_data= Base64.encode64(raw_img_data)
%>
<img src="data:image/jpeg;base64,<%= base_64_img_data%>" />
Did you encode the raw image data to base64 before placing it as part of the URI?

Image source path in application_helper.rb in Rails

In my Rails app, I am using a img tag in Application_helper.rb, But I think Assests pipeline is not working here, So the image is not loading on the page. And Browser console show as error of "failed to load the given URL".
One line fro my code block is as :
text = "<input type='checkbox'/><img src='Icon_Bar.png' />#{r[:value]}<span class='small'>(#{r[:count]})</span>".html_safe
And it works fine, when I used any online path for the image. Please Help.
Try this,
text = "<input type='checkbox'/><img src='/assets/Icon_Bar.png' />#{r[:value]}<span class='small'>(#{r[:count]})</span>".html_safe
Add /assets/ before the image.extension.
when Icon_Bar.png in assets/images/Icon_Bar.png
Try:
<img src="<%= image_path('Icon_Bar.png') %>" />
The doc is here: http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-image_path
Try :
<%= image_tag("Icon_Bar.png") %>
Watch out for the capital letters , they also matter in referencing to assets.

Resources