Загрузка файла изображения с Фарадеем в качестве вложения в комментарий Zendesk

Я могу отправить как тикет, так и файл вложения, но при попытке открыть загруженное изображение в программе просмотра изображений я получаю эту ошибку

Error interpreting JPEG image file (Not a JPEG file: starts with 0x2d 0x2d)

и вывод на консоль во время загрузки показывает

Content-Type: "multipart/form-data;

Вот как я отправляю изображение, которое я загружаю с помощью формы HAML

connection = Faraday.new(:url => "https://account.zendesk.com/api/v2/uploads.json?filename=image.jpg") do |builder|
  builder.basic_auth "email/token", "token"
  builder.request :multipart
  builder.response :logger
  builder.adapter Faraday.default_adapter
end

payload = { 'files[]' => Faraday::UploadIO.new(open(params["images"].first).path, 'image/jpg', "image.jpg", "Content-Disposition" => "file") }
response = connection.post do |req|
  req.body = payload
  req.headers['Accept'] = 'application/json'
end
rtn_data = JSON.load(response.body)

token = rtn_data['upload']['token']

После получения токена я отправляю билет следующим образом:

conn = Faraday.new :url => "https://account.zendesk.com/api/v2/tickets/#{params["ticket_id"]}.json"
    conn.basic_auth "email/token", "token"
    resp = conn.put do |req|
      req.headers['Accept'] = 'application/json'
      req.headers['Content-Type'] = 'application/json'
      req.body =
      '{
        "ticket": {
          "comment": {
            "body": "See screenshot.",
            "uploads":["' + token + '"]
          }
        }
      }
    end

Если я пытаюсь изменить тип содержимого загружаемого файла на

req.headers['Content-Type'] = 'image/jpg'

Я получаю ошибку

undefined method 'bytesize' for Hash:0x007fb11e104b78

и если я тогда изменю путь на.to_json

Faraday::UploadIO.new(open(params["images"].first).path.to_json, 'image/jpg', "image.jpg", "Content-Disposition" => "file") }

Я получаю еще одну ошибку

Нет такого файла или каталога @ rb_sysopen - "/tmp/RackMultipart20171124-15501-1n0qio6.jpg"

но если я вставлю маршрут в браузер - картинка загружается. Есть идеи, что я делаю не так?

0 ответов

Другие вопросы по тегам