Я совершенно не знаком с node.js, поэтому я пытаюсь найти способ создания API загрузки изображений, который возвращает json после завершения процесса , Я использую облако разработчиков Watson (визуальное распознавание), которое возвращает JSON после завершения задачи обработки.Node.js: API загрузки файлов и JSON return
Надеюсь, у вас есть советы & идеи о том, как сделать этот проект выполненным. Я думал об использовании экспресс-библиотеки?
Это мой код, который обрабатывает локальное изображение прямо сейчас и записывает результат JSON на консоль. Я хочу иметь возможность загружать изображение через api и возвращать JSON после завершения процесса.
Большое спасибо!
Код для обработки изображения:
var watson = require('watson-developer-cloud')
var fs = require('fs')
//initialisng the service
var visual_recognition = watson.visual_recognition({
api_key : '<Enter API Key here>',
version: 'v3',
version_date: '2016-05-20'
});
var params = {
images_file: fs.createReadStream('./resources/image.jpg')
};
visual_recognition.classify(params, function(err, res){
if(err)
console.log(err);
else
console.log(JSON.stringify(res, null, 2));
});
Первый Try для сервера загрузки (спасибо @Eduard за наконечник):
var express = require('express')
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
var app = express()
app.post('/upload', upload.single('avatar'), function (req, res, next) {
if(err){
console.log("Error uploading file");
}
console.log(req.file);
console.log(req.body);
res.status(204).end();
console.log("Upload success");
})
app.listen(3000, function() {
console.log('Upload Server listening on port 3000');
});
К сожалению, это возвращает «ReferenceError: эээ не определен [..]», при загрузке изображения с этой простой Python скрипт:
import requests
url='http://localhost:3000/upload'
imageURL = 'ImageURL'
with open(imageURL, 'rb') as image:
filename = image.name
files = {'avatar': (image)}
r = requests.request(method="POST", url=url, files=files)
print(r.text);
print(r.status_code)
Sidenote: Почему я хочу использовать сервер Node.js? К сожалению, SDK Watson-Developer-Cloud Python не поддерживается на моем оборудовании (робот) и с использованием конечной точки API с прямой загрузкой с питона вызывает проблемы из-за старой версии python на аппаратном обеспечении (проблемы с SNI)
Спасибо за быстрый ответ! Я добавил свою первую попытку на этот вопрос, к сожалению, это не работает? (См. Ошибку). Кроме того: у вас есть идея о том, как подключить два кода -> После загрузки изображения успешно обработайте изображение? – JSt
@JSt Здравствуйте! Вы пытаетесь получить доступ к неопределенной переменной с именем 'err'. Сначала вам нужно позвонить в ваше промежуточное ПО. Пожалуйста, проверьте мои настройки здесь: https://gist.github.com/EduardJS/21f6903b96c7659e64d118adfc5450fc – Eduard