nodejs 分页展示指定文件夹下文件列表

需求:利用分页展示指定文件夹下的文件列表

环境:nodejs express

设计思想:把获取文件列表,分页分开增强复用性(也就这里用?)及数组映射 ,重新整理.

获取所有文件

/**
 * @description: 获取文件夹下文件
 * @param {String} path 文件夹目录
 * @return: 文件列表
 */
function fileList(path) {
  return fs.readdirSync(path)
}

未进行文件属性判断,可以使用fs.stat()方法判断.

数组分页

/**
 * @description: 数组分页
 * @param {Number} page
 * @param {Number} pageSize
 * @param {Object} array
 * @return:
 */
function arrayByPage(page, pageSize, array) {
  const startIndex = (page - 1) * pageSize;
  return (startIndex + pageSize >= array.length) ? array.slice(startIndex, array.length) : array.slice(startIndex, startIndex + pageSize);
}

案例运用

/**
* @api {get} /api/upload/listByPage 分页获取列表
* @apiGroup upload
* @apiParam {Number} page
* @apiParam {Number} pageSize
* @apiSuccess {json} result
* @apiVersion 1.0.0
*/

router.get('/listByPage', (req, res) => {
  let page = req.query.page || 1
  let pageSize = req.query.pageSize || 5
  // 总数
  const totalRecord = fileList('./upload').length
  // 映射 ,重新整理
  const listForName = fileList('./upload').map((val, index, arr) => {
    let json = {}
    json.name = val
    json.path = `/upload/${val}`
    return json
  })
  const list = arrayByPage(page,pageSize,listForName)
  res.json({
    status: 200,
    code: 0,
    totalRecord:totalRecord,
    pageSize: pageSize,
    page: page,
    data: list
  })
});

 

调用下,perfect完美

{
    "status": 200,
    "code": 0,
    "totalRecord": 1,
    "pageSize": 5,
    "page": 1,
    "data": [
        {
            "name": "upload-1567215613252.jpg",
            "path": "/upload/upload-1567215613252.jpg"
        }
    ]
}

如哪位大佬发现不完美、有误及更好的方法.批评指正.

你可能感兴趣的:(奇技淫巧)