首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >临时文件下载

临时文件下载
EN

Stack Overflow用户
提问于 2013-03-21 05:08:54
回答 3查看 3.4K关注 0票数 1

是否有一个服务可以创建一个文件的一次性下载,最好是我可以从NodeJS中使用的东西?

我在FilePicker上做了一些研究,还没有发现任何关于重新生成它为文件提供的链接的信息。也许有一种方法可以用NodeJS实现这一点,但是我同时使用Meteor,所以很多节点可能会发生冲突。

EN

回答 3

Stack Overflow用户

发布于 2013-03-21 05:29:07

你可以用流星建造它。使用流星路由器陨石 &使用服务器端路由来传递文件。

您需要一个集合来跟踪下载的文件:

服务器JS

代码语言:javascript
复制
var downloads = new Meteor.Collection("downloads");

//create a link
downloads.insert({url:"/mydownload.zip",downloaded:false})

Meteor.Router.add('/file/:id', 'GET', function(id) {
    download = downloads.findOne(id);
    if( download) {
       if(dowload.downloaded) {
           this.response.send("You've already downloaded me")
       }
       else
       {
           //I guess you could just redirect or stream the file for an extra layer of surety
           this.response.redirect(download.url);
       }
   }
});

在客户端上,您可以将/files/{{_id}}与文件的_id一起使用,该文件由person作为链接下载而来。

票数 1
EN

Stack Overflow用户

发布于 2013-03-21 21:19:19

我的建议还将是添加自定义服务器端逻辑来计数上传的#(或者只是将文件标记为下载/未下载)并作出相应的响应。最接近Filepicker.io的方法是使用安全策略将文件下载限制在特定的时间间隔内。

票数 0
EN

Stack Overflow用户

发布于 2013-03-24 19:52:50

除了使用router

在Meteor.startup中,您可以添加

代码语言:javascript
复制
var require = __meteor_bootstrap__.require;
fs = require( 'fs' );

应该只在服务器上声明fs变量。fs包由Meteor使用,不需要单独添加。

一旦您这样做了,您就可以创建以Meteor.uuid()作为其名称的文件,这使得它们非常独特,很难猜测。使用Meteor.setTimeout也可以在一段时间后删除该文件。

问题是:要下载的文件来自哪里?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15539964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档