gpt4 book ai didi

meteor - 如何使用铁路由器或 meteor 本身提供文件?

转载 作者:行者123 更新时间:2023-12-03 15:17:30 25 4
gpt4 key购买 nike

我正在尝试在我的 Meteor 应用程序上提供一个 zip 文件,但我被卡住了。经过大量谷歌搜索后,似乎最好的方法是使用 Iron Router,但我不知道如何:

Router.map ->
@route "data",
where: 'server'
path: '/data/:id'
action: ->
data = getBase64ZipData(this.params.id)
this.response.writeHead 200, { 'Content-Type': 'application/zip;base64' }
???

最佳答案

在服务器上:

var fs = Npm.require('fs');

var fail = function(response) {
response.statusCode = 404;
response.end();
};

var dataFile = function() {
// TODO write a function to translate the id into a file path
var file = fileFromId(this.params.id);

// Attempt to read the file size
var stat = null;
try {
stat = fs.statSync(file);
} catch (_error) {
return fail(this.response);
}

// The hard-coded attachment filename
var attachmentFilename = 'filename-for-user.zip';

// Set the headers
this.response.writeHead(200, {
'Content-Type': 'application/zip',
'Content-Disposition': 'attachment; filename=' + attachmentFilename
'Content-Length': stat.size
});

// Pipe the file contents to the response
fs.createReadStream(file).pipe(this.response);
};

Router.route('/data/:id', dataFile, {where: 'server'});

在客户端:

<a href='/data/123'>download zip</a>

这样做的好处是它会将文件作为附件下载,您可以自定义用户看到的文件名。诀窍是写 fileFromId功能。我发现将所有动态生成的文件存储在 /tmp 下是最容易的。 .

此答案假定文件是动态生成的。如果你想提供静态内容,你可以把你的文件放在 public 下。目录。见 this问题了解更多详情。

关于meteor - 如何使用铁路由器或 meteor 本身提供文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com