Я пытаюсь загрузить файл в 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