Node-js:使用 Node Cisco Spark Client 发送许多附件
Node-js : Sending many attachments with Node Cisco Spark Client
我使用 Node Cisco Spark 客户端 (https://github.com/marchfederico/node-sparkclient) 发送带有任何附件的消息。
我可以发送1个附件,但数量不多。
这是我的代码:
你能帮帮我吗?
function postMessage(roomId,message,nbfichiers) {
return new Promise(function (fulfill, reject){
var messageParams = {}
var sanitizedMessage = '>'+message.replace(/\n/g,"<br>")
if (nbfichiers.length > 0){
console.log("Nombres de pièces jointes : " + nbfichiers.length);
for(var b=0; b < nbfichiers.length; b++){
messageParams.file = fs.readFileSync('uploads/'+nbfichiers[b]+'');
messageParams.filename = nbfichiers[b];
messageParams.markdown = true
sparkClient.createMessage(roomId,sanitizedMessage,messageParams,function(err,message){
if (err) {
reject(err)
}
else {
fulfill(message)
}
});
fs.unlinkSync('uploads/'+nbfichiers[b]);
}
}
})
}
通过在 new Promise(...)
中使用循环,您只会在使用承诺时获得第一次迭代的结果,这真的是您期望的行为吗?
根据 node-sparkclient documentation 您一次只能发送一个附件。您可以通过以下方式使用 Promise.all
发送多个附件:
function postAttachment(roomId, message, file) {
return new Promise(function (fullfill, reject){
var messageParams = {}
var sanitizedMessage = '>'+message.replace(/\n/g,"<br>")
messageParams.file = fs.readFileSync('uploads/'+file);
messageParams.filename = file;
messageParams.markdown = true
sparkClient.createMessage(roomId, sanitizedMessage, messageParams, function(err,message){
if (err) {
reject(err)
}
else {
fs.unlinkSync('uploads/'+ file);
fullfill(message)
}
});
})
}
function postAttachments(roomId, message, files) {
return Promise.all(files.map(file => postAttachment(roomId, message, file));
}
如果您只想发送一个包含所有文件的附件,您可以在发送之前合并您的文件。
我使用 Node Cisco Spark 客户端 (https://github.com/marchfederico/node-sparkclient) 发送带有任何附件的消息。 我可以发送1个附件,但数量不多。
这是我的代码: 你能帮帮我吗?
function postMessage(roomId,message,nbfichiers) {
return new Promise(function (fulfill, reject){
var messageParams = {}
var sanitizedMessage = '>'+message.replace(/\n/g,"<br>")
if (nbfichiers.length > 0){
console.log("Nombres de pièces jointes : " + nbfichiers.length);
for(var b=0; b < nbfichiers.length; b++){
messageParams.file = fs.readFileSync('uploads/'+nbfichiers[b]+'');
messageParams.filename = nbfichiers[b];
messageParams.markdown = true
sparkClient.createMessage(roomId,sanitizedMessage,messageParams,function(err,message){
if (err) {
reject(err)
}
else {
fulfill(message)
}
});
fs.unlinkSync('uploads/'+nbfichiers[b]);
}
}
})
}
通过在 new Promise(...)
中使用循环,您只会在使用承诺时获得第一次迭代的结果,这真的是您期望的行为吗?
根据 node-sparkclient documentation 您一次只能发送一个附件。您可以通过以下方式使用 Promise.all
发送多个附件:
function postAttachment(roomId, message, file) {
return new Promise(function (fullfill, reject){
var messageParams = {}
var sanitizedMessage = '>'+message.replace(/\n/g,"<br>")
messageParams.file = fs.readFileSync('uploads/'+file);
messageParams.filename = file;
messageParams.markdown = true
sparkClient.createMessage(roomId, sanitizedMessage, messageParams, function(err,message){
if (err) {
reject(err)
}
else {
fs.unlinkSync('uploads/'+ file);
fullfill(message)
}
});
})
}
function postAttachments(roomId, message, files) {
return Promise.all(files.map(file => postAttachment(roomId, message, file));
}
如果您只想发送一个包含所有文件的附件,您可以在发送之前合并您的文件。