2015-08-13 4 views
0

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.

Répondre

0

En fonction du code partagé ici, il se peut que vous soumettiez la commande à filepicker.

Essayé de vérifier https://github.com/rest-client/ mais pour une raison quelconque, il est en panne.

Iff vous voulez me joindre tirer directement s'il vous plaît un email à [email protected]

Dylan