簡體   English   中英

如何在使用 Bot 框架的聊天機器人中使用 nodeJS 獲取 excel 文件的路徑?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM