Я нажимаю на api, чтобы получить изображение, которое они сохранили, и использовать его в качестве картинки профиля для пользователей нашего приложения.Я использую Ruby on Rails и ActiveStorage с AWS для прикрепления и сохранения изображения.Они отправляют обратно следующее:
{"status"=>"shared", "values"=>[{"$objectType"=>"BinaryData", "data"=>"/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAAT.....KK5tT/9k=", "mime_type"=>"image/jpeg", "metadata"=>{"cropped"=>false}}]}
Я пробовал много разных способов присоединить его и манипулировать данными, например, просто прикрепить его как есть, Base64.decode64, Base64.encode64.Я также попытался создать новый файл и затем прикрепить его.Вот несколько примеров:
data = Base64.decode64(Base64.encode64(response[:selfie_image]["values"][0]["data"]))
user.profile_pic.attach!(
io: StringIO.new(open(data).read),
filename: "#{user.first_name}_#{user.last_name}_#{user.id}.jpg",
content_type: "image/jpeg"
)
data = Base64.decode64(Base64.encode64(response[:selfie_image]["values"][0]["data"]))
out_file = File.new("#{user.first_name}_#{user.last_name}_# . {user.id}.jpg", "w")
out_file.puts(data)
out_file.close
user.profile_pic.attach(
io: StringIO.new(open(out_file).read),
filename: "#{user.first_name}_#{user.last_name}_#{user.id}.jpg",
content_type: "image/jpeg"
)
Я также пытался:
user.profile_pic.attach(out_file)
Он либо говорит, что вложение равно нулю, либо в зависимости от того, как я манипулирую данными, которые он будетНе говорите, что неправильный тип заголовка содержимого файла JPEG, и выбросьте это как ошибку изображения.
Как я могу манипулировать этими данными, чтобы иметь возможность прикрепить их в качестве изображения для наших пользователей с ActiveStorage?