![](/img/trans.png)
[英]How can i make the chatbot (bot framework) send an attached file from any folder to the user (NodeJS)?
[英]How can I get the path of an excel file with nodeJS in a chatbot using Bot framework?
我用機器人框架做了一個聊天機器人,使用這個框架可以添加附件。 所以我做了一個代碼,將我的 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
};
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.