у меня есть массив файлов, которые я хочу отправить в виде запроса (используя запрос) на мой сервер
var fs = require("fs");
var request = require("request");
var img = [];
img.push(fs.readFileSync("./test_images/0000.png", "binary"));
img.push(fs.readFileSync("./test_images/0001.png", "binary"));
img.push(fs.readFileSync("./test_images/0002.png", "binary"));
img.push(fs.readFileSync("./test_images/0003.png", "binary"));
function analyze_raw(images)
{
return new Promise((resolve, reject) =>
{
var options =
{
url: "http://localhost:3000/api/face",
method: "GET",
//headers: //not working
// {
// Content-Type: "application/octet-stream"
// },
body: images
};
request(options, function(err, response)
{
if(err)
{
return resolve(err);
}
else
{
return resolve(response.body);
}
});
});
}
analyze_raw(img);
мой сервер должен принять файлы и отправить различные запросы в службы Microsoft vision, собрать их вместеи отправить результат обратно.Версия, которая отправляет изображения в виде веб-URL, работает, но я должен заставить ее работать и с необработанными файлами, и я понятия не имею, неправильно ли я отправляю файлы на мой сервер или просто отправляет файлыне то, что ожидает API api.
Каждый запрос к видению Microsoft должен иметь тип "application / octet-stream".Каждый запрос к моему серверу должен содержать список необработанных изображений, а затем он выполняет отдельные запросы.
Проблема в том, что я не знаю, где здесь моя ошибка, и как ее правильно сделать.
Вот код моего сервера, который вызывает службы Microsoft для отдельных изображений (который работает для URL, когда аргумент json верен)
function microsoft_request(req_url, req_content, method, req_key, json = true)
{
return new Promise((resolve, reject) =>
{
var microsoft_request_options =
{
"url": keys.base_url + req_url,
"method": method,
"body": req_content,
"headers":
{
"Ocp-Apim-Subscription-Key": req_key
}
};
if(json) { microsoft_request_options.json = true; }
else { microsoft_request_options.headers["Content-Type"] = "application/octet-stream"; }
//send request
request(microsoft_request_options, function(err, response)
{
if(err)
{
return reject({error: {statusCode: 500, message: err}});
}
else if(response.statusCode != 200)
{
return reject({error: {statusCode: response.statusCode, message: response.body}});
}
else
{
return resolve({content: response.body});
}
});
});
}
Здесь - это документация по API, который я пытаюсь использовать.Ошибка, которую я получаю от Microsoft vision при вызове моей собственной службы со списком необработанных файлов, является следующей (идентичной для каждого изображения):
{
"error":
{
"code": "InvalidImage",
"message": "Decoding error, image format unsupported."
}
}
Изображения являются jpg или png, оба поддерживаются в соответствии с документацией,Это заставляет меня верить, что происходит что-то странное, а несуществующая строгая или статическая типизация javascript сводит меня с ума.