我正在尝试发送formData,一个来自我使用 request的图像的流 问题是formData请求后请求是激发的. 有什么方法可以管理图像请求识别吗?但是可以自由地向formData添加参数吗? 例如: var req
问题是formData请求后请求是激发的.
有什么方法可以管理图像请求识别吗?但是可以自由地向formData添加参数吗?
例如:
var req = request({ method: 'POST', url: 'http://www.foo.bar/api/v1/tag/recognize', formData: { image_file: request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg'), param2: 'value2' }, json: true, });
我如何开火:
请求( ‘http://visual-recognition-demo.mybluemix.net/images/horses.jpg’)
所以响应可以在req中使用
更新:似乎缺少Content-Length标头
http://visual-recognition-demo.mybluemix.net/images/horses.jpg回应
你只能获得Transfer-Encoding:chunked
更多细节here
看看 this part的文档.你所描述的基本上是这个块request.get('http://google.com/img.png').pipe(request.put('some_url'));
请注意文档
When doing so, content-type and content-length are preserved in the
PUT headers.
另请注意,如果您未指定回调,请求将始终返回Stream.如果确实提供了回调,它会尝试将响应转换为String.使用encoding:null使其返回原始字节.
示例 –
request({ url: 'some_url', //your image encoding: null //returns resp.body as bytes }, callback..)
要将调用链接在一起(一个接一个地运行),您可以嵌套回调或使用promises.例如,在另一个请求完成后运行请求 –
var request = require('request'); //1st request('first_url', function (error, response, body) { if (!error && response.statusCode == 200) { //2nd request('other_url', function (error, response, body) { //process resp }); } });
甚至更好,将请求回调代码转换为Promises. See a promise library like Bluebird关于如何做到这一点.
这是蓝鸟的一个例子(然后用于迭代时效)
var Promise = require("bluebird"); Promise.promisifyAll(require("request")); request.getAsync('some_url').then(function(resp) { request.getAsync('some_other_url').then(..processing code..); });