72

一般的に行われているように静的ファイルを提供したいが、一般的に行われてexpress.static(static_path)いるように動的ルートで提供したい

app.get('/my/dynamic/:route', function(req, res){
    // serve stuff here
});

このコメントでは、開発者の1人が解決策を示唆していますが、彼が何を意味するのかすぐにはわかりません。

4

4 に答える 4

111

わかった。Express の応答オブジェクトのソース コードで例を見つけました。これは、その例を少し変更したバージョンです。

app.get('/user/:uid/files/*', function(req, res){
    var uid = req.params.uid,
        path = req.params[0] ? req.params[0] : 'index.html';
    res.sendFile(path, {root: './public'});
});

res.sendFileメソッドを使用しています。

:オプションsendFileの使用を要求するようにセキュリティが変更されました。root

于 2012-07-19T21:06:07.287 に答える
16

以下のコードを使用して、異なる URL から要求された同じ静的ファイルを提供します。

server.use(express.static(__dirname + '/client/www'));
server.use('/en', express.static(__dirname + '/client/www'));
server.use('/zh', express.static(__dirname + '/client/www'));

これはあなたのケースではありませんが、ここに来た他の人を助けるかもしれません.

于 2015-09-11T02:04:13.943 に答える
8

使用res.sendfileすることも、引き続き使用することもできますexpress.static

const path = require('path');
const express = require('express');
const app = express();

// Dynamic path, but only match asset at specific segment.
app.use('/website/:foo/:bar/:asset', (req, res, next) => {
  req.url = req.params.asset; // <-- programmatically update url yourself
  express.static(__dirname + '/static')(req, res, next);
});         

// Or just the asset.
app.use('/website/*', (req, res, next) => {
  req.url = path.basename(req.originalUrl);
  express.static(__dirname + '/static')(req, res, next);
});
于 2019-09-12T22:01:48.337 に答える