Node.js 如何在使用Bot框架的聊天机器人中获取带有nodeJS的excel文件的路径?
我用bot框架做了一个聊天机器人,用这个框架可以添加一个附件。 因此,在我将excel文件添加到聊天机器人后,我编写了一段代码,将其保存在base64中 但是我想从我的pc中的任何地方获取一个Excel文件,并在base64中转换它,我需要完整的路径,而在NodeJS中我不知道如何进行转换Node.js 如何在使用Bot框架的聊天机器人中获取带有nodeJS的excel文件的路径?,node.js,excel,path,botframework,Node.js,Excel,Path,Botframework,我用bot框架做了一个聊天机器人,用这个框架可以添加一个附件。 因此,在我将excel文件添加到聊天机器人后,我编写了一段代码,将其保存在base64中 但是我想从我的pc中的任何地方获取一个Excel文件,并在base64中转换它,我需要完整的路径,而在NodeJS中我不知道如何进行转换 async attachmentsStep(stepContext, next) { var fs = require('fs'); var activity = stepC
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
};
}
}
您有什么想法吗?您可以使用和获取文件的绝对路径
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
};
}
}
感谢您的快速回答,但例如,我从我的桌面(C:\Users\Myname\desktop\Book1.xlsx)获取一个Excel文件和_filename和*_dirname*,我有这样一个:console.log(u filename);=c:\Users\Myname\Desktop\bot framework v4\bot fonctionnel v4\13.core bot\dialogs\mainlialog.js console.log(u dirname);=c:\Users\Myname\Desktop\bot framework v4\bot fonctionnel v4\13.core bot\dialogs我还没有尝试file.path,我应该如何使用它@阿尤什