javascript - 如何使 axios 返回正确类型的缓冲区?

标签 javascript node.js garmin

注意:当我第一次发布这个问题时......我什至不知道从哪里开始,甚至不知道如何给问题起一个好的标题。经过几次评论后,我向问题添加了更多数据,然后最终将问题标题更改为现在的样子 - 感谢大家的帮助!

我在服务器应用程序中使用 Nodejs。使用可视化代码作为我的调试器。

我正在使用以下代码从磁盘读取 Garmin Fit 文件:

    var fName = path.join(__dirname, './4861335825.fit');

    fs.readFile(fName, function (err, content) {

“内容”包含以下内容:

file read buffer

我正在通过 REST 调用下载相同 Garmin Fit 文件。以下是 REST 调用的响应

enter image description here

这是响应 header :

enter image description here

我试图让response.data与我从磁盘读取它时相同。这是我尝试创建缓冲区来读取数据的代码

    encoding = 'utf8'
    const buf1 = Buffer.from(response.data, encoding);

根据 Pointy 的评论,我尝试使用以下编码进行 REST 调用两者失败

encoding = 'utf8';
encoding = 'utf16le';

缓冲区如下所示:

rest api buffer.from

这些文件相同,区别是一个从磁盘读取,另一个尝试从下载它的 REST 调用的response.data 中读取。

两个缓冲区中的数据似乎相同:

[14, 16, 77, ...]

但是,类型和大小完全不同:

buffer compare

我还应该指出,从磁盘读取的文件使用 fit-file-parser 成功进行了解析。 REST 调用中的解析失败。

这里是解析代码 我正在使用这个解析器:https://www.npmjs.com/package/fit-file-parser

    // Create a FitParser instance (options argument is optional)
    var fitParser = new FitParser({
        force: true,
        speedUnit: 'km/h',
        lengthUnit: 'km',
        temperatureUnit: 'kelvin',
        elapsedRecordField: true,
        mode: 'cascade',
        });

        var error = null;
        var data = null;
        try{
            fitParser.parse(responseData, function (error, data){

                if(error){
                    console.log(error);
                    return null;
                }

                return data;
            });
        }
        catch(err){
            console.log('error',err);
        }

如何使 REST 下载的缓冲区与从磁盘读取的缓冲区相同?

最佳答案

感谢@josh.trow给我的建议。

解决这个问题的方法如下:

之前:

    var config = {
      headers:{Authorization:header}
    }

之后:

    var config = {
      responseType: 'arraybuffer',
      headers:{Authorization:header}
    }

axios 调用返回与文件读取相同的缓冲区!

enter image description here

关于javascript - 如何使 axios 返回正确类型的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61543176/

相关文章:

sony-smartwatch - 带有实时手部 Action API 的健身追踪器

javascript - 将 Garmin GPS 坐标获取到 JavaScript 变量中

javascript - jQuery 在所见即所得文本区域中触发 keyCode Ctrl+Shift+z 和 Ctrl+z

javascript - 使用函数生成器将值返回到 GraphQL Mutation 中的输出字段

javascript - 后台下载并延迟保存到本地驱动器

javascript - 在数据库中搜索并显示结果 Express Node Angular MEAN.js $resource

javascript - 按每个对象属性对 javascript 数组进行排序

node.js - Google Datastore Node 查询 JS 中的排序依据和分组依据

javascript - 为什么我无法删除在 Electron 中使用 fs-extra 创建的目录?

localization - 如何以编程方式设置标签的本地化文本?