如何使用Bot框架在聊天机器人中使用nodeJS获取excel文件的路径



我用bot框架做了一个聊天机器人,有了这个框架,就可以添加附件。所以我做了一个代码,在我把excel文件添加到聊天机器人中后,把它放在base64中。

但我想从我的电脑中的任何地方获取Excel文件,并在base64中转换它。我需要完整的路径,而在NodeJS中,我不知道如何做到这一点。

async attachmentsStep(stepContext, next) {
var fs = require('fs');
var activity = stepContext.context.activity;
if (activity.attachments && activity.attachments.length > 0) {
var attachment = activity.attachments[0];
// function to encode file data to base64 encoded string
function base64_encode(file) {
// read binary data
var bitmap = fs.readFileSync(file);
// convert binary data to base64 encoded string
return new Buffer.from(bitmap).toString('base64');
}
this.base64str = base64_encode( **PATH OF EXCEL FILE** + attachment.name);
var nex = await stepContext.next();
var base64 = this.base64str;
return {
base64,
nex
};
} 
}

你有个主意吗?

您可以使用__filename和__dirname来获取文件的绝对路径。

console.log(__filename);
// Prints: /Users/mjr/example.js

ContentUrl恢复文件,因此不需要路径,使用url我可以直接在base64中转换它,如下所示:

async attachmentsStep(stepContext, next) {
var activity = stepContext.context.activity;
if (activity.attachments && activity.attachments.length > 0) {
var attachment = activity.attachments[0];
var base64Url = attachment.contentUrl;
console.log(process.env.PATH);
/** Convert Url in base64 **/
var axios = require('axios');
var excel = await axios.get(base64Url, {responseType: 'arraybuffer'});
var base64str = Buffer.from(excel.data).toString('base64');
/**************************/
// base64str = 'data:' + base64Type + ';base64,' + base64str; 
var nex = await stepContext.next();              
return {
base64str,
nex
};
}
}

相关内容

  • 没有找到相关文章

最新更新