Как прикрепить образ Base64 к объекту Active Storage? - PullRequest
0 голосов
/ 11 апреля 2020

Я могу прикрепить изображение png из dis c, и все работает отлично:

obj.attachment.attach(
  io: File.open('dog.png'),
  filename: "image_name",
  content_type: "image/png"
)

Но это не работает, давая результат, как слишком маленький пустой квадрат, когда я сохраняю изображение Base64 png который закодирован в String что-то подобное "data:image/png;base64,iVB**..REST OF DATA..**kSuQmCC" с помощью:

obj.attachment.attach(
  io: StringIO.new(encoded_base_sixty_four_img),
  filename: "image_name",
  content_type: "image/png"
)

Также я пытался его декодировать, но выдает ту же ошибку:

decoded_base_sixty_four_img = Base64.decode64(encoded_base_sixty_four_img)
obj.attachment.attach(
  io: StringIO.new(decoded_base_sixty_four_img),
  filename: "image_name",
  content_type: "image/png"
)

Также пытался записать это декодированное значение в File, но ничего не сработало, что дало результат в виде чистого изображения:

file = file.write(decoded_base_sixty_four_img)
obj.attachment.attach(
  io: file,
  filename: "image_name",
  content_type: "image/png"
)

Итак, есть ли другие мысли?

1 Ответ

0 голосов
/ 11 апреля 2020

Благодаря @tadman, data:image/png;base64, часть не может быть обработана Base64.decode64, когда я удалил ее, все работало нормально.

...