반응형
Express를 사용하여 동적 경로에서 정적 파일 제공
나는 일반적으로 수행되는 정적 파일을 제공 express.static(static_path)
하지만 일반적으로 수행 되는 동적 경로에서
app.get('/my/dynamic/:route', function(req, res){
// serve stuff here
});
개발자 중 한 명이이 의견 에서 해결책을 암시 했지만 그가 의미하는 바는 즉시 명확하지 않습니다.
괜찮아. 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
.
아래 코드를 사용하여 다른 URL에서 요청한 동일한 정적 파일을 제공합니다.
server.use(express.static(__dirname + '/client/www'));
server.use('/en', express.static(__dirname + '/client/www'));
server.use('/zh', express.static(__dirname + '/client/www'));
귀하의 경우는 아니지만 여기에 온 다른 사람들에게 도움이 될 수 있습니다.
이것은 작동합니다.
app.use('/my/dynamic/:route', express.static('/static'));
app.get('/my/dynamic/:route', function(req, res){
// serve stuff here
});
문서에는 app.use()
작동 하는 동적 경로가 나와 있습니다. 참조 https://expressjs.com/en/guide/routing.html를
다음을 사용 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);
});
참고 URL : https://stackoverflow.com/questions/11569181/serve-static-files-on-a-dynamic-route-using-express
반응형
'Program Tip' 카테고리의 다른 글
Python-파일 및 폴더 이동 및 덮어 쓰기 (0) | 2020.11.24 |
---|---|
(스프링 보안을 통해) 내 웹 애플리케이션에 로그인 한 모든 사용자 목록을 어떻게 가질 수 있습니까? (0) | 2020.11.24 |
elasticsearch에 "store": "yes"가 필요한 이유는 무엇입니까? (0) | 2020.11.24 |
CSS : 부모 높이에 상대적인 이미지 크기를 어떻게 설정할 수 있습니까? (0) | 2020.11.24 |
C 전처리 기는 순환 종속성을 어떻게 처리합니까? (0) | 2020.11.24 |