Загрузка нескольких файлов в Ruby с использованием Knack API - PullRequest
0 голосов
/ 16 ноября 2018

Не удается загрузить файл, используя Knack API со сценарием Ruby.Документация API KNACK гласит:

Загрузка файла или изображения через Knack API - это двухэтапный процесс.Первый выполнит HTTP-запрос POST с типом содержимого multipart / form-data по следующему URL-адресу: https://api.knack.com/v1/applications/app_id/assets/file/upload.

curl -X POST "https://api.knack.com/v1/applications/YOUR-APP-ID/assets/file/upload" \
  -H 'content-type: multipart/form-data' \
  -H 'x-knack-rest-api-key: YOUR-API-KEY' \
  -F "files=@/path/to/your/file.txt"

Я попробовал следующее в Ruby и получил 400 неверных запросовкод ответа.

def multipart_form_post  

  uri = URI.parse "https://api.knack.com/v1/applications/xxxxxxx/assets/file/upload" 

  file_path = "c:/temp/test.txt"

  newline = "\r\n"
  filename = File.basename(file_path)

  boundary = "----WebKitFormBoundary#{Time.now.nsec}"


  post_body = []
  post_body << "--#{boundary}#{newline}"
  post_body << "Content-Disposition: form-data; name=\"File\"; filename=\"#{filename}\"#{newline}"
  post_body << "Content-Type: application/octet-stream#{newline}"
  post_body << "#{newline}"
  post_body << File.read(file_path)
  post_body << "#{newline}--#{boundary}--#{newline}"



  http = Net::HTTP.new uri.host, uri.port
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE

  request = Net::HTTP::Post.new uri.request_uri
  request.body = post_body.join
  request["Content-Type"] = "multipart/form-data, boundary=#{boundary}"
  request["x-knack-rest-api-key"]     = "xxxxxx"
  request['cache-control'] = "no-cache"


  response = http.request request
  puts "#{response.code} #{response.message}"
  return response

end

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 ноября 2018

Я наконец обнаружил свою проблему. Проблема заключалась в запятой вместо точки с запятой между "multipart / form-data; border = # {border}".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...