我对node.js完全陌生,所以我试图找到一种方法来创建一个图像文件上传API,它在处理完成后返回一个json 。 我正在使用Watson Developer Cloud(Visual Recognition),它在完成处理任务后返回JSON。Node.js:文件上传API和JSON返回
我希望你有关于如何完成这个项目的建议&的想法。我想过使用快速库?
这是我的代码,它现在处理本地图像并将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));
});
第一次尝试上传服务器(感谢@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:未定义ERR [...]',同时用这个简单的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)
旁注: 为什么我要使用Node.js服务器? 不幸的是,我的硬件(机器人)不支持Watson-Developer-Cloud Python SDK,并且使用API端点直接从python上传,导致硬件上的旧python版本(SNI问题)造成麻烦
谢谢你的快速反应!我添加了我的第一个尝试问题,不幸的是这不起作用? (见错误)。此外:你有关于如何连接两个代码的想法 - >成功上传图像后,处理图像? – JSt
@JSt你好!您正试图访问一个名为'err'的未定义变量。你需要先打电话给你的中间件。请检查我的要点:https://gist.github.com/EduardJS/21f6903b96c7659e64d118adfc5450fc – Eduard