Javascript 通过require(“http”)请求将图像作为二进制文件发送到远程服务器
我正在尝试从nodejs服务器向远程服务器发送一个映像。这是目前为止的请求格式 注意:就像邮递员中的二进制请求一样,选择文件并发送)Javascript 通过require(“http”)请求将图像作为二进制文件发送到远程服务器,javascript,node.js,http-request,Javascript,Node.js,Http Request,我正在尝试从nodejs服务器向远程服务器发送一个映像。这是目前为止的请求格式 注意:就像邮递员中的二进制请求一样,选择文件并发送) 使用: var options = { hostname: "hostname", path: "/upload", port: 443, method: 'PUT', headers: { 'Accept': 'application/json', 'Content-Type': 'ima
使用:
var options = {
hostname: "hostname",
path: "/upload",
port: 443,
method: 'PUT',
headers: {
'Accept': 'application/json',
'Content-Type': 'image/png'
}
};
fs.readFile('./img/thumbnail.png', function(error, data) {
options.body = data;
upload(options).then(...
});
编辑2
经过几次尝试,我们发现了一种通过流上传图像的有效策略,下面是它的外观,但仍然没有成功
const https = require('https');
var request = https.request(options, function(response) {
var buffers = [];
response.on('data', function(chunk) {
buffers.push(chunk);
});
response.on('end', function(){
console.log(response.headers['content-type']);
var body = JSON.parse(buffers.length ? Buffer.concat(buffers).toString() : '""');
response.statusCode >= 200 && response.statusCode < 300 ? resolve(body) : reject(body);
});
}).on('error', function(error) {
reject(error);
});
const fs = require('fs');
var readStream = fs.ReadStream(body.path);
readStream.pipe(request);
readStream.on('close', function(){
request.end();
});
consthttps=require('https');
var request=https.request(选项、函数(响应){
var缓冲区=[];
响应.on('data',函数(块){
buffers.push(块);
});
on('end',function(){
log(response.headers['content-type']);
var body=JSON.parse(buffers.length?Buffer.concat(buffers.toString():'“”);
response.statusCode>=200&&response.statusCode<300?解析(正文):拒绝(正文);
});
}).on('error',函数(error){
拒绝(错误);
});
常数fs=要求('fs');
var readStream=fs.readStream(body.path);
readStream.pipe(请求);
readStream.on('close',function(){
request.end();
});
我想你只是想要这个:
fs.createReadStream('./img/thumbnail.png').pipe(https.request({
hostname: 'hostname',
path: '/upload',
method: 'PUT',
headers: {
Accept: 'application/json',
'Content-Type': 'image/png',
}
}, function (response) { ... }));
您的代码的问题是您将主体放入了
选项中。主体
,但根据,它似乎没有任何这样的选项。我想您只需要以下内容:
fs.createReadStream('./img/thumbnail.png').pipe(https.request({
hostname: 'hostname',
path: '/upload',
method: 'PUT',
headers: {
Accept: 'application/json',
'Content-Type': 'image/png',
}
}, function (response) { ... }));
您的代码的问题是您将主体放入了
选项中。主体
,但根据,它看起来没有任何这样的选项。上传图像(选项,主体)
看起来不正确。。。body
定义在哪里?很抱歉,我修正了拼写错误,我对图像数据传递到哪里感到困惑???你看过这个网站吗?有很多关于如何使用节点发送数据的例子,大多数人可能会建议使用中间件。我查了很多,已经花了几个小时,迫切需要帮助,并且不能使用请求,它必须是低级的nodejs代码。我只想知道如何在node.js中发送二进制数据,就像在postman的选项中一样。我现在用截图编辑了上传图像(选项,正文)
看起来不对劲。。。body
定义在哪里?很抱歉,我修正了拼写错误,我对图像数据传递到哪里感到困惑???你看过这个网站吗?有很多关于如何使用节点发送数据的例子,大多数人可能会建议使用中间件。我查了很多,已经花了几个小时,迫切需要帮助,并且不能使用请求,它必须是低级的nodejs代码。我只想知道如何在node.js中发送二进制数据,就像在postman的选项中一样。我现在用截图编辑过,所以我的问题中截图中的所有选项,无论是二进制
,原始
,x-www-form-urlencoded
和表单数据
,都会进入正文
,你如何为每个选项指定内容类型
?我不知道邮递员所说的这些东西是什么意思。特别是,我想不出“二进制”和“原始”可能意味着什么x-www-form-urlencoded
大概就是内容类型(和正文格式),而表单数据
可能就是多部分/表单数据
。你可以很容易地查找这两个函数。嗨@smarx,猜猜看,我在response中没有得到任何响应。在('end',function(){
上,当我将图像数据直接传递到end()
函数中时,甚至在response.on('data')上都没有
,就像一切都冻结了一样,我读取图像数据和传递信息的方式是否有问题?当你说“没有得到任何响应”时你的意思是这些事件没有调用你的处理程序吗?我在编辑部分添加了另一段代码,请查看。因此,我问题中屏幕截图中的所有选项,无论是二进制
,原始
,x-www-form-urlcoded
和表单数据
,都会进入正文
,如何指定C内容类型
?我不知道邮递员所说的各种东西是什么意思。特别是,我想不出“二进制”和“原始”可能是什么意思。x-www-form-urlencoded
大概就是内容类型
(以及正文的格式),而表单数据
可能是多部分/表单数据
。您可以很容易地查找这两个部分。您好@smarx,猜猜看,我在响应中没有得到任何响应。在('end',function(){
时,我将图像数据直接传递到end()
函数,甚至在响应中都没有
,就像一切都冻结了一样,我读取图像数据和传递图像数据的方式是否有问题?当你说“没有得到任何响应”时,你的意思是没有为这些事件调用处理程序吗?我在编辑部分添加了另一段代码,请查看。