私はユーザーにファイルをアップロードできるようにしています。ファイルをアップロードしたユーザーだけがファイルにアクセスできるようにすることができるかどうかを知りたいと思っています。ノードにファイルをアップロードする
現在、これらを静的フォルダ(パブリック)にアップロードしています。
私はユーザーにファイルをアップロードできるようにしています。ファイルをアップロードしたユーザーだけがファイルにアクセスできるようにすることができるかどうかを知りたいと思っています。ノードにファイルをアップロードする
現在、これらを静的フォルダ(パブリック)にアップロードしています。
ファイルをレンダリングするだけです(これはパフォーマンスが低下します) ファイルを次のように保存します。非パブリックフォルダのfilename.extension.userid(例:uploadという名前のディレクトリ)。
ディレクトリのアップロードに要求をキャッチするためにルートを置く:
app.get("/upload/:filename", function(req, res){
var fname = req.params.filename;
var userid = req.user.id; // RETRIEVE AUTHENTICATED USER ID
var fullname = fname+"."+userid;
fs.readFile(__dirname+"/../public/upload/"+fullname, 'base64', function(err, data){
if(err || !data) return res.status(404);
res.set('Content-Disposition', 'attachment; filename="'+fname+'"');
res.set('Content-Type', 'application/pdf'); // example for pdf
return res.end(data, 'base64');
});
});
私はあなたがアップロードを処理するために別のルートを使用して示唆された理由を見つけることができませんでした。私は同じルートに投稿することができました。私がする必要があったのは、パスを含めてそれに応じて設定することでした。
var folder = newPath = path.join(__dirname, '..', './uploads')
var newPath = folder + '/' + callback.fileName;
fs.writeFile(newPath, data, function(err) {
if (err) {
console.log(err)
} else {
//Do stuff
}
});
この回答は、あなたが求めていたものから比較的遠いようです。このコードはすべて、ファイルを少し異なるディレクトリにアップロードします。あなたの質問が意味することであるファイルの保護は何もしません(「自分のファイルへのアクセスをアップロードしたユーザーにのみ許可する」)。そうすることで、SOコミュニティが私たちに与えられた情報があいまいで情報が不足しているときに役立ちません。 – gelliott181
この質問は非常に広く、実際には「特定のファイルへのアクセスを制限するために認証を実装するにはどうすればよいですか」と尋ねています。私はあなたが既に認証を実装しているかもしれないので、それは悪い質問ではないと言っているのですが、静的ファイルを許可されていないユーザーに送信する措置は、あなたのウェブサイトのセクションを不正なユーザー。 – gelliott181
それには、既存の認証コードと戦略が実装されていますか? – gelliott181
私は広範な認証プロセスを持っています。私は、アプリケーションを使用する前に登録してアカウントを有効にする必要があります。 – user3183411