Как преобразовать файл, закодированный в строку base64 с помощью javascript, в Ruby объект файла? - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь загрузить файл в Rails 6 Activestorage api (используя ReactJS), документы для этого мне не очень понятны, но после долгих поисков, кажется, лучше всего использовать:

obj.attachment_name.attach(file)

Это хорошо работает, если у меня есть файл на конце Rails, однако передача файла из React на сторону Rails немного сложна, лучший вариант, который я нашел, - преобразовать файл в base64. строка и отправить его в API

Итак, как преобразовать файл javascript, переданный в виде строки base64 на стороне Rails, в объект файла?

Я пытался этот ответ , но, что удивительно, он не преобразует строку в файл (интересно, если это потому, что преобразование JS отличается от преобразования в Rails base64)

Примечание: это работает хорошо кодировать и декодировать файлы, используя только ruby

# Testing plain ruby
# Open the file you wish to encode
file_path = "/Users/...path/some_image.jpg"
data = File.open(file_path).read

# Encode the image
encoded = Base64.encode64(data)

# Why this block doesn't work for a JS encoded base64 string??
# i.e, if I passed encoded string from JS here, it won't work

File.open("some_filename", "wb") do |file|
  file.write(Base64.decode64(encoded))
end
...