2017-01-13 7 views
0

Ich mache eine Ajax ablehnen zu meinem Controller mit einigen Daten und base64 Bild und jetzt möchte ich dieses Bild zu s3 hochladen und base64 mit der Bild-URL ersetzen. Ich verfolge diese https://sebastiandobrincu.com/blog/how-to-upload-images-to-rails-api-using-s3Wie base64 Bild zu S3 von Rails Controller hochladen?

def split_base64(uri_str) 
      if uri_str.match(%r{^data:(.*?);(.*?),(.*)$}) 
      uri = Hash.new 
      uri[:type] = $1 # "image/gif" 
      uri[:encoder] = $2 # "base64" 
      uri[:data] = $3 # data string 
      uri[:extension] = $1.split('/')[1] # "gif" 
      return uri 
      else 
      return nil 
      end 
end 

def convert_data_uri_to_upload(image_url)    
      image_data = split_base64(image_url) 
      image_data_string = image_data[:data] 
      image_data_binary = Base64.decode64(image_data_string) 

      temp_img_file = Tempfile.new("") 
      temp_img_file.binmode 
      temp_img_file << image_data_binary 
      temp_img_file.rewind 

      img_params = {:filename => "image.#{image_data[:extension]}", :type => image_data[:type], :tempfile => temp_img_file} 
      uploaded_file = ActionDispatch::Http::UploadedFile.new(img_params) 
      end 
    return uploaded_file  
end 

nun von meinem Controller ich vorbei convert_data_uri_to_upload(base64_image)

Nun ich weiß nicht, wo die AWS-Anmeldeinformationen zu schreiben. Laut der URL muss ich die Anmeldeinformationen in Fog.rb-Datei schreiben, aber ich habe keine solche Datei. Ich habe einen ImageUploader innerhalb des Uploader-Ordners erstellt, der CarrierWave erweitert und die Konfigurationen geschrieben hat, aber es funktioniert auch nicht.

Antwort

0

Sie können dotenv Ruby Gem folgen Sie mit diesem: http://www.rubydoc.info/gems/dotenv-rails/2.1.1

+0

Während dies theoretisch die Frage beantworten können, [es wäre vorzuziehen] (// meta.stackoverflow.com/q/8259) umfassen die wesentlichen Teile die Antwort hier, und stellen Sie den Link als Referenz zur Verfügung. – kayess