下载JSONARRAY文件Express,节点,Angular

发布于 2025-01-18 19:52:05 字数 1039 浏览 0 评论 0原文

在我正在做的WebApp中,有一些创建的JSONARRAY文件。例如,它们看起来像:

[{attr1:"123",attr2:"456"},{attr1:"abc",attr2:"def"}]

我试图将这些JSONARRAY文件发送给客户端,应完全按照服务器中的服务方式下载它们,不应打开或解析它们。

在Express中,我尝试使用,sendsendfile下载

res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Disposition', 'attachment; filename=file.json');

res.sendFile(name, function (err) {
    if (err) {
         console.log('error sending:', name, err);
    } else {
         console.log('Sent:', name);
    }
});

在前端我正在使用文件放宽

this.Service.get(filename).subscribe(
    result => {
        console.log(result)
        let blob = new Blob(result, {type: "application/json"});
        saveAs(blob, collectionname+".json");
    }
);

,当我打开文件时看起来像这样的客户端:

[object Object][object Object]

但是我console.log()结果,我看到了json对象。

我能做些什么?


我的设置版本: 角CLI:12.0.5 节点:14.16.1 软件包管理器:NPM 7.11.1 角:12.0.5

In a webapp I'm doing, there are jsonarray files that are created. For example, they look like:

[{attr1:"123",attr2:"456"},{attr1:"abc",attr2:"def"}]

I am trying to send these jsonarray files to the client and they should be downloaded exactly as they in the server, they should not be opened or parsed.

In express I have tried using, send, sendFile and download

res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Disposition', 'attachment; filename=file.json');

res.sendFile(name, function (err) {
    if (err) {
         console.log('error sending:', name, err);
    } else {
         console.log('Sent:', name);
    }
});

in the front end I am using file-saver

this.Service.get(filename).subscribe(
    result => {
        console.log(result)
        let blob = new Blob(result, {type: "application/json"});
        saveAs(blob, collectionname+".json");
    }
);

and when i open the file in the client it looks like this:

[object Object][object Object]

But then I console.log() the result, I see the json objects.

What can I do?


Versions of my setup:
Angular CLI: 12.0.5
Node: 14.16.1
Package Manager: npm 7.11.1
Angular: 12.0.5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

满栀 2025-01-25 19:52:05

BLOB不能将JSON对象作为参数(甚至是JSON对象的数组)。
您可以通过一系列字符串,例如

new Blob(result.map(x=>JSON.stringify(x)), {type: "application/text"});

以获取详细信息。

Blob cannot take json objects as argument (not even array of json objects).
You could pass an array of strings, e.g.

new Blob(result.map(x=>JSON.stringify(x)), {type: "application/text"});

Raed the Blob documentation for details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文