基本的にファイルの1 回限りのダウンロードを作成するサービス、できれば NodeJS から使用できるサービスはありますか?
FilePicker について調査しましたが、ファイルのリンクを再生成する方法については何も見つかりませんでした。NodeJSでこれを行う方法があるかもしれませんが、私は同時にMeteorを使用しているため、多くのNodeが競合する可能性があります.
基本的にファイルの1 回限りのダウンロードを作成するサービス、できれば NodeJS から使用できるサービスはありますか?
FilePicker について調査しましたが、ファイルのリンクを再生成する方法については何も見つかりませんでした。NodeJSでこれを行う方法があるかもしれませんが、私は同時にMeteorを使用しているため、多くのNodeが競合する可能性があります.
あなたは流星でそれを構築することができます。meteor-routerとmeteoriteを使用し、サーバー側のルーティングを使用してファイルを配信します。
ダウンロードしたファイルを追跡するには、コレクションが必要です。
サーバーJS
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で使用できます
私のお勧めは、カスタムのサーバー側ロジックを追加して、アップロード数をカウントし (またはファイルにダウンロード済み/未ダウンロードのフラグを立てるだけ)、それに応じて応答することです。Filepicker.io でできる最も近いのは、セキュリティ ポリシーを使用して、ファイルのダウンロードを特定の時間間隔に制限することです。
router
パッケージの使用に加えて
Meteor.startup で追加できます
var require = __meteor_bootstrap__.require;
fs = require( 'fs' );
fs
変数はサーバー上でのみ宣言する必要があります。fs パッケージは Meteor によって使用されるため、個別に追加する必要はありません。
Meteor.uuid()
これを行うと、一意で推測しにくい名前のファイルを作成できます。を使用して、一定時間後にファイルを削除することもできますMeteor.setTimeout
問題は、ダウンロードするファイルはどこから来るのかということです。