Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在使用Bot框架的聊天机器人中获取带有nodeJS的excel文件的路径?_Node.js_Excel_Path_Botframework - Fatal编程技术网

Node.js 如何在使用Bot框架的聊天机器人中获取带有nodeJS的excel文件的路径?

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

我用bot框架做了一个聊天机器人,用这个框架可以添加一个附件。 因此,在我将excel文件添加到聊天机器人后,我编写了一段代码,将其保存在base64中

但是我想从我的pc中的任何地方获取一个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
            };
        } 
    }
您有什么想法吗?

您可以使用和获取文件的绝对路径

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,我应该如何使用它@阿尤什