项目实践过程中,会使用非常多的静态资源,怎样可以直接在浏览器中访问到这些静态资源

    • const fs = require('fs');
      const path = require('path'); module.exports = (dirpath = "./public") => {
      return async (ctx, next) => {
      if (ctx.url.indexOf("/public") === 0) {
      //public 开头 读取文件
      const url = path.resolve(__dirname, dirpath);
      // path.basename(p, [ext])
      // 提取出用‘/’隔开的path的最后一部分,ext是过滤字符
      // path.basename('/foo/bar/baz/asdf/quux.html', '.html')
      // returns
      // 'quux'
      const fileBaseName = path.basename(url); // public
      const filepath = url + ctx.url.replace("/public", ""); //得到文件目录
      console.log(filepath); try {
      //判断是否是一个文件夹
      stats = fs.statSync(filepath);
      if (stats.isDirectory()) {
      const dir = fs.readdirSync(filepath);
      console.log(dir); // [ 'index.html', 'style.css' ] const ret = ['<div style="padding-left">'];
      dir.forEach(filename => {
      console.log(filename);
      //不带小数点的格式,就是文件夹
      if (filename.indexOf(".") > -1) {
      ret.push(
      `<p><a style="color:black" href="${ctx.url}/${filename}">${filename}</a></p>`)
      } else {
      //文件
      ret.push(`<p><a href="${ctx.url}/${filename}">${filename}</a></p>`)
      } });
      ret.push("</div>")
      ctx.body = ret.join("");
      } else {
           //访问到的是一个文件,则直接读取内容
      console.log('文件');
      const content = fs.readFileSync(filepath);
      ctx.body = content;
      } } catch (error) {
      ctx.body = "404 ,not found";
      console.log(error); }
      } else {
      //否则不是静态资源,直接去下一个中间件
      await next();
      }
      }
      }

      同时在我们的app文件中添加中间件的引用

    • const static = require('./static');
      app.use(static('./public'));

      便可以在浏览器中使用public目录来访问文件了

koa中静态文件资源中间件实现的更多相关文章

  1. django源码分析——静态文件staticfiles中间件

    本文环境python3.5.2,django1.10.x系列 1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化,然后调用相应的设置方 ...

  2. WPF中静态引用资源与动态引用资源的区别

    WPF中静态引用资源与动态引用资源的区别   WPF中引用资源分为静态引用与动态引用,两者的区别在哪里呢?我们通过一个小的例子来理解. 点击“Update”按钮,第2个按钮的文字会变成“更上一层楼”, ...

  3. Django模板语言中静态文件路径的灵活写法

    如图,我们看到的时html页面中静态文件的路径,其中/static/是settings.py中的设置: 假设我们将settings.py中的/static/改变了,这样的话我们还需要将html中的/s ...

  4. ASP.NET5 中静态文件的各种使用方式

    所谓静态文件,包含HTML文件,css文件.图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件的一些内容. 服务端的静态文件 默认情况 ...

  5. asp .net core 静态文件资源

    前言 对静态资源的简单的一个概况,在<重新整理.net core 计1400篇>系列后面会深入. 正文 我们在加入中间件是这样写的: app.UseStaticFiles(); 默认是给w ...

  6. 多War项目中静态文件的共享方案

    [原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 在互联网产品中,一般会有多个项目(Jar.WAR)组成一个产品线.这些WAR项目,因为使用相同的前端架构(jQuery.easyui等) ...

  7. Django之静态文件,中间件,admin后台管理

    静态文件 静态文件的使用 在 网页使用的css文件,js文件和图片等叫做静态文件.1)在项目下新建静态文件夹 static. 2) 配置静态文件所在的物理目录.Settings.py STATIC_U ...

  8. [Python] Django框架入门5——静态文件、中间件、上传图片和分页

    说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...

  9. javaweb中静态文件的处理方法

    方案一:激活Tomcat的defaultServlet来处理静态文件 在web.xml中添加: <servlet-mapping> <servlet-name>default& ...

随机推荐

  1. 路飞学城知识点3缓存知识点之一Djang自带的缓存

    缓存是暂时把数据放到哪儿的意思,用于提高查询的访问速度用的,mysql等关系型数据库通常用作备份,数据库进行增删改操作一段时间内存同步到缓存(非关系型数据库中) 缓存与内存的区别: 通常把数据放到内存 ...

  2. IDEA创建maven项目时,maven太慢-archetypeCatalog=internal

    创建项目时候加上archetypeCatalog=internal 参数, archetypeCatalog表示插件使用的archetype元数 据,不加这个参数时默认为remote,local,即中 ...

  3. golang开发不错的参考资料

    https://golangbot.com/learn-golang-series/ https://gist.github.com/ivangabriele/1c552aadc247c0a2f256 ...

  4. java笔记--BigDecimal的使用

    BigDecimal的运用 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877231.html "谢谢-- BigDec ...

  5. iTextSharp 使用详解(转) 感谢原著作者 .

    TextSharp是一个生成Pdf文件的开源项目,最近在项目中有使用到这个项目,对使用中的经验作一个小结. ITextSharp中相关的概念: 一.Document 这个对象有三个构造函数: 隐藏行号 ...

  6. 关于Angular中时间戳的计算

    前言 使用的是Moment.js 插件,插件的安装详情请参考官方网址(https://momentjs.com/) 正文 步骤一:引用import * as moment from 'moment'; ...

  7. 细嚼慢咽C++primer(4)——类(1):构造函数,类型别名

    1  最简单地说,类即使定义了一个新的类型和一个新的作用域. 2  基础 1  构造函数 构造函数一般应使用一个构造函数初始化列表,来初始化对象的数据成员. Sales_item(): units_s ...

  8. LeetCode算法题 菜鸟总结

    近期准备抽出一点时间,刷一些题防止手生,毕竟codemonkey,吃饭的手艺不能忘. ······································· 基本的题目都是基于java语言解答 ...

  9. 给腾讯云Linux主机创建Swap文件

    新买的腾讯云主机没有提供Swap分区 理由是由于主机经常因为内存使用率过高,频繁使用Swap,导致磁盘IO过高,服务器整体性能反而下降. 不过用户依然可以使用Swap文件的方式添加Swap. 方法如下 ...

  10. 如何查看SharePoint Server的版本信息

    可以通过查看注册表来得你当前运行的是SharePoint 2010的哪个版本,具体步骤如下: 1. 登录到安装了SharePoint Central Administration 的服务器. 2. 点 ...