Javascript 通过Node.js将图像上载到Twitter会导致HTTP错误400(错误请求)
我正试图通过一个不和谐的频道将图片上传到Twitter上。这是我正在使用的代码:Javascript 通过Node.js将图像上载到Twitter会导致HTTP错误400(错误请求),javascript,node.js,twitter,discord,discord.js,Javascript,Node.js,Twitter,Discord,Discord.js,我正试图通过一个不和谐的频道将图片上传到Twitter上。这是我正在使用的代码: var编号=0; 函数downloadJPG(url){//此函数以jpg格式下载图像 request.get(url.on('error',console.error).pipe(fs.createWriteStream('image.jpg')); } if(message.attachments.every(attachIsImageJPG)){ 下载jpg(message.attachments.first
var编号=0;
函数downloadJPG(url){//此函数以jpg格式下载图像
request.get(url.on('error',console.error).pipe(fs.createWriteStream('image.jpg'));
}
if(message.attachments.every(attachIsImageJPG)){
下载jpg(message.attachments.first().url);
var imageToPostJPG=fs.readFileSync('image.jpg');
client.post('media/upload',{media:imageToPostJPG},函数(err,data,res){
if(err)console.log(err);
控制台日志(数据);
数字=数字+1
client.post('status/update',{status:'Success Cop#'+number,media_id:data.media_id_string},函数(err,params,res){
if(err)console.log(err);
控制台日志(params);
});
});
}
图像应该以状态上传到Twitter,但只有状态被上传,这是我在控制台中看到的:
错误:HTTP错误:400错误请求
应请求。\回调(C:\Users\Silvano\Desktop\Twitter\node\u modules\Twitter\lib\Twitter.js:221:9)
at Request.self.callback(C:\Users\Silvano\Desktop\Twitter\node\u modules\Request\Request.js:185:22)
at Request.emit(events.js:200:13)
应要求。(C:\Users\Silvano\Desktop\Twitter\node\u modules\request\request.js:1161:10)
at Request.emit(events.js:200:13)
在收到消息时。(C:\Users\Silvano\Desktop\Twitter\node\u modules\request\request.js:1083:12)
在Object.onceWrapper(events.js:288:20)
在IncomingMessage.emit(events.js:205:15)
在endReadableNT(_stream_readable.js:1154:12)
在处理和拒绝时(内部/process/task_queues.js:84:9)
{
请求:'/1.1/media/upload.json',
错误:“无法识别媒体类型。”
}
如何解决此错误并将图像上载?我认为问题在于流必须在
readFileSync
读取之前完成
// modified to indicate completion by calling callback
function downloadJPG(url, callback) { //This function downloads the image in jpg format
let stream = request.get(url).on('error', console.error).pipe(fs.createWriteStream('image.jpg'));
stream.on('finish', callback);
}
// modified to do the twtr work in the callback
if (message.attachments.every(attachIsImageJPG)) {
downloadJPG(message.attachments.first().url, function() {
var imageToPostJPG = fs.readFileSync('image.jpg');
client.post('media/upload', {media: imageToPostJPG}, function(err, data, res) {
if (err) console.log(err);
console.log(data);
number = number+1
client.post('statuses/update', {status: 'Success Cop #'+number, media_ids: data.media_id_string}, function(err, params, res) {
if (err) console.log(err);
console.log(params);
});
});
});
}
旁注:我发现经过一两个步骤后,回调样式太难编写和读取,而承诺更可取