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.
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