Je travaille sur une migration de données de MySQL à Postgres, à partir d'un db avec des images blobbed dans une colonne à une nouvelle base de données où toutes les images sont téléchargées sur Filepicker. Je cherche à utiliser l'API REST de Filepicker pour convertir ceci mais continue d'être rencontré avec 400 mauvaises demandes en envoyant des demandes de POST avec ces images. Je ne trouve pas de réponse claire à cette question et je suis nouveau dans ce domaine - j'espère que quelqu'un sera capable de me diriger dans la bonne direction.Filepicker REST demandes API POST utilisant un fichier avec Ruby
J'ai le code suivant essayer cela dans le cadre d'une migration plus importante Kiba ELT (dont je suis sûr est sans rapport avec ce qu.):
# ***************
# Image conversion
# ***************
# Write the old file to a temporary new one
file = File.new("oldimages/oldimage#{row[:id]}.jpg", 'w')
file.write(row[:image])
file.close
# Access this new file
file = File.read("oldimages/oldimage#{row[:id]}.jpg")
# Fix issue with invalid UTF8
puts "Valid file encoding before conversion? " + file.valid_encoding?.to_s
if !file.valid_encoding?
file = file.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
end
puts "Valid file encoding after conversion? " + file.valid_encoding?.to_s
# Set URI
uri = "https://www.filepicker.io/api/store/S3?key=#{ENV['FILEPICKER_API_KEY']}"
puts "URI being used: " + uri
# Make post request to Filepicker sending the file to be uploaded
# This works: curl -X POST -F [email protected]/oldimage1.jpg https://www.filepicker.io/api/store/S3\?key\=ENV['FILEPICKER_API_KEY']
# Also works as { "url" => SOME_IMAGE_URL }
# ...... BUT THIS DOESN'T WORK
params = { "fileUpload" => "@oldimages/oldimage#{row[:id]}.jpg" }
puts "Here the params: " + params.to_s
res = RestClient.post uri, params
# Convert the response into a hash and grab the new Filepicker URL
puts "Response: " + res.to_s
puts "Response FP URL: " + eval(res.to_s)[:url]
fp_url = eval(res.to_s)[:url]
# Assign the Filepicker URL to the image
newrow[:filepicker_url] = fp_url
puts "Newrow FP URL AFTER assignment: " + newrow[:filepicker_url]
# ***************
# end image conversion
# ***************
Alors, je peux obtenir ce travail en passant l'URL d'une image en tant que paramètres pour la demande de publication, et sur la ligne de commande en utilisant un fichier et cURL. Cependant, je ne peux pas obtenir ce Ruby pour trouver le fichier sans obtenir une mauvaise demande. J'ai l'impression d'avoir essayé d'innombrables itérations de ce code pour tenter de trouver une solution de travail, mais en vain jusqu'à présent.
Documents Filepicker sur le sujet here.
Est-ce que cela pourrait passer le chemin du fichier sous forme de chaîne pour les params?
Toute aide, je suis éternellement reconnaissant. Faites-moi savoir si vous pouvez utiliser un code supplémentaire ....
Steve.