2015-08-13 4 views
0

Я работаю с переносом данных из 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.

ответ

0

На основе общего кода, который может быть передан команде filepicker.

Пробовал, чтобы проверить https://github.com/rest-client/, но по какой-то причине не работает.

Ифф вы хотите связаться со мной напрямую, пожалуйста, стрелять по электронной почте [email protected]

Дилан