Я хочу загрузить изображение с дополнительной информацией на сервер с помощью POST, используя multipart. Мне удалось загрузить файл с помощью бессонницы, но я просто не могу понять, как сделать это правильно в ruby.
Вот мой скриншот для insomia (в моем заголовке у меня для Content-Type установлено значение multipart / form-data, а для моего Авторизации установлен правильный токен на предъявителя https://photos.app.goo.gl/i6UeePgW22cKmBUU7
Это мой рубинкод, с которым я борюсь ...
def self.upload_picture tempfile, picture_params, bearer_token
begin
uri = URI("#{ENV['API_HOST']}/pictures/addLocalPicture")
req = Net::HTTP::Post.new(uri, {'Content-Type' =>'multipart/form-data', 'Authorization' => "Bearer #{bearer_token}"})
form_data = nil
File.open(tempfile.path) do |file|
body = {
stock_id: "1122",
project_id: "112233",
company_id: "11223344",
filename: "test.png",
size: 1
}
form_data = {'photoUploadS3' => file}
req.set_form form_data, 'multipart/form-data'
req.body = URI.encode_www_form(body)
res = Net::HTTP.start(uri.hostname, uri.port) do |http|
res = http.request(req)
say res.body
response = eval(encode_utf8(res.body))
return response.to_struct
end
end
rescue => e
say "failed #{e}"
return []
end
end
Это API
libUploadNode.uploadNode(req, res, function (err) {
if (err != undefined) {
res.json({code:80, msgError:err});
return ;
}
if (req.file === undefined || req.file == null)
res.json({code:81, msgError:"nofile upload failed"});
else {
const unique_filename = uuidV1() + "-" + req.body.filename;
var pictureData = libValidator.makeSafeData(req, res, [
{name: "stock_id", type: "objectid", isNeeded: true},
{name: "project_id", type: "objectid", isNeeded: true},
{name: "company_id", type: "objectid", isNeeded: true},
{name: "filename", type: "string", isNeeded: true},
{name: "size", type: "number", isNeeded: true},
{name: "owner", type: "string", isNeeded: false},
{name: "license", type: "string", isNeeded: false},
{name: "dimension", type: "string", isNeeded: false}
]);
...
Я получаю ошибку => {\ "code \": 80, \ "msgError\ ": {}}
Есть ли у вас какие-либо идеи о том, как внедрить содержимое тела в составную часть?