Я работаю с переносом данных из MySQL в Postgres, из db с изображениями, размытыми в столбце, в новый db, где все изображения загружаются в Filepicker. Я ищу, чтобы использовать API-интерфейс Filepicker REST для его преобразования, но при выполнении запросов с POST-запросами с этими изображениями всегда удовлетворяются 400 Bad Requests. Я не могу найти четко определенного ответа на этот вопрос и новичок в этой области работы - надеюсь, кто-то сможет указать мне в правильном направлении.Filepicker REST API POST-запросы с использованием файла с Ruby
Я следующий код пытается это как часть более крупной миграции Киба ELT (который я уверен, что не имеет никакого отношения к этому 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
# ***************
Таким образом, я могу получить эту работу путем передачи URL-адреса изображения в качестве параметров для почтового запроса и в командной строке с использованием файла и cURL. Однако я не могу получить этот Ruby, чтобы найти файл, не получив Bad Request. Я чувствую, что я пробовал бесчисленные итерации этого кода, пытаясь найти рабочее решение, но пока ничего не получилось.
Документы на эту тему here.
Может ли это передать путь к файлу в виде строки для параметров, нарушающих это?
Любая помощь, я бесконечно благодарен. Дайте мне знать, можете ли вы использовать какой-либо дополнительный код ....
Steve.