いいえ、アップロードされたすべてのファイルをパブリック フォルダーに配置する必要はありません。
Express では複数のミドルウェアを構成できるため、もう 1 つのミドルウェアを追加して、目的のディレクトリから静的コンテンツを提供できます。
ディレクトリを URL パスで指定したい場合は、このようなディレクトリ マウント機能を使用できます !!
app.use('/upload',express.static(__dirname + '/upload'));
もちろん、他のサーバーを使用してアップロードされたファイルを保存し、リクエストをプロキシすることでそれらのファイルを取得できます。
app.get('/upload/:fileName',function(req,res) {
var options = {
port: 80,
method : 'GET',
hostname : "localhost",
path : "/upload/" + req.params.fileName
};
var req = http.request(options,function(response) {
response.pipe(res);
});
req.on('error',function(err) {
res.statusCode = 404;
res.end("Error : file not found");
});
req.end();
});
このコードは、アップロードされたファイルが元のサーバーに保存されている場合だけでなく、他のサーバーにファイルがある場合にも機能します!!