亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

NestJs 靜態目錄配置詳解

2024-05-06 16:48:56
字體:
來源:轉載
供稿:網友

網上查看了很多文檔,發現很多都是自己實現中間件來完成此功能,不僅浪費時間,而且增加了太多的代碼量。實際上,nest已經幫助我們封裝好了相關功能。

1、查找線索

由于官方文檔沒有做詳細解釋說明,那么我們可以從此框架底層入手:

我們知道,nestjs底層用的是express,那么express是通過什么來完成靜態目錄構建的:

serve-static

2、搜索源碼

我們在項目搜索欄目中搜索“serve-static”會發現如下圖:

NestJs,靜態目錄,配置

也就是說,當我們在使用nest框架的時候,serve-static 會隨之而構建好,那么我們直接參考其源碼即可:依賴地址

Nestjs 源碼:

  // Type definitions for serve-static 1.13// Project: https://github.com/expressjs/serve-static// Definitions by: Uros Smolnik <https://github.com/urossmolnik>//         Linus Unnebäck <https://github.com/LinusU>// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped// TypeScript Version: 2.2/* =================== USAGE ===================  import * as serveStatic from "serve-static";  app.use(serveStatic("public/ftp", {"index": ["default.html", "default.htm"]})) =============================================== *//// <reference types="express-serve-static-core" />import * as express from "express-serve-static-core";import * as m from "mime";/** * Create a new middleware function to serve files from within a given root directory. * The file to serve will be determined by combining req.url with the provided root directory. * When a file is not found, instead of sending a 404 response, this module will instead call next() to move on to the next middleware, allowing for stacking and fall-backs. */declare function serveStatic(root: string, options?: serveStatic.ServeStaticOptions): express.Handler;declare namespace serveStatic {  var mime: typeof m;  interface ServeStaticOptions {    /**     * Enable or disable setting Cache-Control response header, defaults to true.      * Disabling this will ignore the immutable and maxAge options.     */    cacheControl?: boolean;    /**     * Set how "dotfiles" are treated when encountered. A dotfile is a file or directory that begins with a dot (".").     * Note this check is done on the path itself without checking if the path actually exists on the disk.     * If root is specified, only the dotfiles above the root are checked (i.e. the root itself can be within a dotfile when when set to "deny").     * The default value is 'ignore'.     * 'allow' No special treatment for dotfiles     * 'deny' Send a 403 for any request for a dotfile     * 'ignore' Pretend like the dotfile does not exist and call next()     */    dotfiles?: string;    /**     * Enable or disable etag generation, defaults to true.     */    etag?: boolean;    /**     * Set file extension fallbacks. When set, if a file is not found, the given extensions will be added to the file name and search for.     * The first that exists will be served. Example: ['html', 'htm'].     * The default value is false.     */    extensions?: string[];    /**     * Let client errors fall-through as unhandled requests, otherwise forward a client error.     * The default value is false.     */    fallthrough?: boolean;    /**     * Enable or disable the immutable directive in the Cache-Control response header.     * If enabled, the maxAge option should also be specified to enable caching. The immutable directive will prevent supported clients from making conditional requests during the life of the maxAge option to check if the file has changed.     */    immutable?: boolean;    /**     * By default this module will send "index.html" files in response to a request on a directory.     * To disable this set false or to supply a new index pass a string or an array in preferred order.     */    index?: boolean | string | string[];    /**     * Enable or disable Last-Modified header, defaults to true. Uses the file system's last modified value.     */    lastModified?: boolean;    /**     * Provide a max-age in milliseconds for http caching, defaults to 0. This can also be a string accepted by the ms module.     */    maxAge?: number | string;    /**     * Redirect to trailing "/" when the pathname is a dir. Defaults to true.     */    redirect?: boolean;    /**     * Function to set custom headers on response. Alterations to the headers need to occur synchronously.     * The function is called as fn(res, path, stat), where the arguments are:     * res the response object     * path the file path that is being sent     * stat the stat object of the file that is being sent     */    setHeaders?: (res: express.Response, path: string, stat: any) => any;  }  function serveStatic(root: string, options?: ServeStaticOptions): express.Handler;}export = serveStatic;

3、使用方式:

說明:源碼中的注釋說的很清楚用法,由于現階段技術有限,博主將項目目錄作為文件地址來簡單的使用。

代碼使用:只需要一句代碼:

在 main.ts文件中:

 //...  import * as serveStatic from 'serve-static';  async function bootstrap() {  const app = await NestFactory.create(AppModule);  //....  // 使用serve-static  // '/public' 是路由名稱,即你訪問的路徑為:host/public  // serveStatic 為 serve-static 導入的中間件,其中'../public' 為本項目相對于src目錄的絕對地址  app.use('/public', serveStatic(path.join(__dirname, '../public'), {   maxAge: '1d',   extensions: ['jpg', 'jpeg', 'png', 'gif'],  }));  //....  await app.startAllMicroservicesAsync();  await app.listen(9871);}bootstrap();

在項目根目錄下創建public目錄:

NestJs,靜態目錄,配置

目錄創建.png

4、測試效果:

首先使用nestjs自帶的upload api來上傳文件,這里不做過多說明,最終通過postman完成測試文件上傳:

NestJs,靜態目錄,配置

測試上傳.png

再使用瀏覽器瀏覽:

NestJs,靜態目錄,配置

瀏覽圖片.gif

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文字幕在线| 中文字幕不卡在线视频极品| 日韩一区二区欧美| 欧美黑人xxxⅹ高潮交| 国产精品免费看久久久香蕉| 欧美专区在线视频| 亚洲国产免费av| 亚洲精品成人免费| 精品久久久香蕉免费精品视频| 亚洲图片欧洲图片av| 欧美电影免费观看高清完整| 日韩69视频在线观看| 欧美性高跟鞋xxxxhd| 成人国产精品久久久| 午夜精品在线视频| 国产欧美一区二区三区视频| 日韩大片在线观看视频| 91高潮在线观看| 98精品国产高清在线xxxx天堂| 国精产品一区一区三区有限在线| 久久久免费观看视频| 亚洲字幕一区二区| 欧美极品美女视频网站在线观看免费| 国产免费一区二区三区香蕉精| 欧美资源在线观看| 欧美精品videosex牲欧美| 国产主播欧美精品| 成人国产亚洲精品a区天堂华泰| 日韩美女视频免费看| 欧美日韩中文字幕| 欧美小视频在线观看| www.日韩不卡电影av| 日韩在线观看免费全| 色99之美女主播在线视频| 亚洲欧美激情四射在线日| 日韩精品免费在线视频| 亚洲va欧美va国产综合久久| 久久色精品视频| 精品久久香蕉国产线看观看亚洲| 国产日韩精品在线| 成人免费观看a| 久久久女人电视剧免费播放下载| 亚洲午夜女主播在线直播| 亚洲r级在线观看| 日韩av在线资源| 国产91精品黑色丝袜高跟鞋| 精品偷拍各种wc美女嘘嘘| 久久久久久久久久久国产| 91亚洲永久免费精品| 欧美日韩午夜激情| 欧美精品videosex极品1| 日韩av免费在线| 草民午夜欧美限制a级福利片| 亚洲高清福利视频| 亚洲精品在线91| 国产精品亚洲美女av网站| 成人在线中文字幕| 欧美亚洲日本黄色| 欧美黄色www| 97精品国产97久久久久久免费| 精品国内亚洲在观看18黄| 韩日精品中文字幕| 精品国产一区二区三区久久久狼| 日韩av网站导航| 亚洲欧美日韩久久久久久| 91九色蝌蚪国产| 国产精品美女免费视频| 国产精品露脸自拍| 亚洲区免费影片| 亚洲国产女人aaa毛片在线| 美日韩丰满少妇在线观看| 中文字幕在线亚洲| 国产日本欧美视频| 国产精品永久免费| 国产精品视频一区国模私拍| 亚洲国产精品va在线看黑人| 97国产在线视频| 国产成人精品av| 蜜臀久久99精品久久久久久宅男| 久久精品视频导航| 在线视频欧美日韩| 亚洲色无码播放| 精品国产欧美一区二区三区成人| 91精品国产综合久久香蕉| 亚洲午夜久久久久久久| 992tv在线成人免费观看| 亚洲人精品午夜在线观看| 国产精品亚洲欧美导航| 日韩亚洲欧美成人| 色综合色综合久久综合频道88| 美女av一区二区| 亚洲人成欧美中文字幕| 久久久噜噜噜久久| 日韩精品www| 国产极品精品在线观看| 欧美久久久精品| 亚洲综合社区网| 中文字幕在线看视频国产欧美| 91亚洲午夜在线| 精品视频久久久久久| 久久不射热爱视频精品| 国产精品免费久久久| 亚洲精品大尺度| 久久久精品美女| 成人高h视频在线| 国产精品中文字幕在线| 92裸体在线视频网站| 国产日韩欧美另类| 欧美午夜女人视频在线| 久久av.com| 亚洲国产成人久久| 日本一区二区三区在线播放| 欧美大片免费观看在线观看网站推荐| 国产精品福利小视频| 日本精品久久久久久久| 久久久久久久久久国产精品| 91成人性视频| 91免费国产网站| 国产美女扒开尿口久久久| 欧美在线一级视频| 国产精品中文字幕久久久| 国产亚洲视频在线观看| 91影视免费在线观看| 国产精品久久久久久av福利| 国内精品久久久久| 国产精品福利网站| 91精品国产综合久久久久久蜜臀| 国产精品老女人视频| 97精品伊人久久久大香线蕉| 国内精品久久久久久中文字幕| 午夜免费在线观看精品视频| 一区二区三区精品99久久| 国产99久久精品一区二区 夜夜躁日日躁| 欧美久久精品午夜青青大伊人| 国产精品va在线播放我和闺蜜| 57pao成人永久免费视频| 亚洲一级一级97网| 久久免费成人精品视频| 欧美黑人国产人伦爽爽爽| 91系列在线观看| 欧美精品videos| 欧美一级大片在线免费观看| 久久久噜噜噜久久中文字免| 欧美野外猛男的大粗鳮| 庆余年2免费日韩剧观看大牛| 欧美日韩亚洲视频| 欧美高清在线视频观看不卡| 国产成人精品久久亚洲高清不卡| 中文字幕精品视频| 色午夜这里只有精品| 91美女片黄在线观看游戏| 欧美裸体男粗大视频在线观看| 欧美乱大交做爰xxxⅹ性3| 欧美国产第一页| 亚洲理论片在线观看| 久久综合色88| 亚洲黄色www网站| 亚洲成人国产精品| 成人欧美一区二区三区黑人孕妇| 久久成人精品电影| 国产日韩中文字幕在线| 国产精品99久久久久久白浆小说| 欧美黄色成人网| 亚洲激情在线视频|