Загрузка файла ruby с использованием MultiPart - Errno::EPIPE: Сломанный канал
У меня есть следующий код, который был скопирован из другого проекта и работает там... однако он не работает в новом проекте ruby для автоматизации тестирования. Я проверил, драгоценные камни установлены, они, кажется, доступны.
У меня есть другие методы в новом проекте, которые используют rest-client для получения ответов... это просто метод загрузки файла, который мне не удался с Errno::EPIPE: Broken pipe.
Я искал решение, но безрезультатно! Я подозреваю, что это проблема с гемом или какой-то другой зависимостью. Как недавний участник перехода с Windows на Mac, я легко теряюсь, поэтому, пожалуйста, будьте терпеливы с моим отсутствием опыта.
require 'json'
require 'openssl'
require 'rest-client'
require 'net/http/post/multipart'
require 'net/https'
require 'net/http'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
def upload_new_file(fileName, folderName, fileTypeId)
@file_id = nil
create_url = see_url + '/configuration-srv/v2/filetypes/' + fileTypeId.to_s + '/files'
url = URI.parse(create_url)
puts 'upload_file: URL to upload file to [' + url.to_s + ']'
content_type = 'text/csv'
begin
@response = File.open(folderName + fileName.to_s, 'rb') do |csv|
req = Net::HTTP::Post::Multipart.new url.path, {'file' => UploadIO.new(csv, content_type, fileName.to_s)}
Net::HTTP.start(url.host, url.port, :use_ssl => url.scheme == 'https') do |http|
req.add_field('Authorization', @session_token)
http.request(req)
end
end
file = JSON.parse(@response.body)
puts 'Created File: ' + file.to_s
@file_id = file['id'].to_s
rescue RestClient::ExceptionWithResponse => e
puts 'This is the returned error string; [ ' + e.response.to_s + ']'
end
end