node使用require mkdirp创建文件夹示例

 更新时间:2023年08月14日 14:00:48   作者:羊先生  
这篇文章主要为大家介绍了node使用require mkdirp创建文件夹示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

mkdirp

npm i mkdirp -S // 1.0.4

 今天在写上传文件时候,查看同步创建文件如是使用了mkdirp包,不过发现网络有大部分错误用法,原因是mkdirp的版本升级了更改了用法

网络错误用法

const mkdirp = require('mkdirp');
await mkdirp(dir) //错误用法一
const mkdirp = require('mkdirp');
//错误用法二
mkdirp('./tmp/foo/bar/baz', function (err) {
  console.log(err); 
});

正确写法

const mkdirp = require('mkdirp')
// 返回值是一个Promise,解析为创建的一个目录  
mkdirp('/tmp/foo/bar/baz').then(made =>
  console.log(made)
)
const mkdirp = require('mkdirp')
// 返回目录 同步写法
const made = mkdirp.sync('/tmp/foo/bar/baz')
console.log(made)

使用实例

// 上传图片
async uploadImg() {
        const { ctx } = this
        const parts = ctx.multipart({ autoFields: true })
        const urls = []
        const dir = path.join(this.config.baseDir, 'app/public/upload/image/', dayjs().format('YYYY-MM-DD'))
        await mkdirp.sync(dir)
        let stream
        while ((stream = await parts()) != null) {
            const fileType = stream.mimeType.split('/')[1]
            const filename = dayjs().valueOf() + '.' + fileType || stream.filename.toLowerCase()
            const target = path.join(dir, filename)
            urls.push(`/public/upload/image/${filename}`)
            const writeStream = await fs.createWriteStream(target)
            await pump(stream, writeStream)
        }
        return urls[0]
    }
// 上传文件
    async uploadFile() {
        const { ctx } = this
        const urls = []
        const stream = await ctx.getFileStream()
        const dir = path.join(this.config.baseDir, 'app/public/upload/file/', dayjs().format('YYYY-MM-DD'))
        await mkdirp.sync(dir)
        const fileType = stream.filename.toLowerCase().split('.')
        const filename = dayjs().valueOf() + '.' + fileType[fileType.length - 1]
        // 生成写入路径
        const target = path.join(dir, filename)
        const writeStream = await fs.createWriteStream(target) // 写入流
        stream.pipe(writeStream) // 以管道方式写入流
        await new Promise((resolve, reject) => {
            writeStream.on('finish', () => {
                // 监听写入完成事件
                urls.push(`/public/upload/file/${filename}`)
                resolve(stream.fields)
            })
            writeStream.on('error', async (err) => {
                await sendToWormhole(stream) // 关闭管道
                writeStream.destroy() // 销毁
                reject(err)
            })
        })
        return urls[0]
    }

在线代码 GitHub代码

调用该方法

以上就是node使用require mkdirp创建文件夹示例的详细内容,更多关于node require mkdirp创建文件夹的资料请关注脚本之家其它相关文章!

相关文章

  • 关于npm i几种常见命令的区别详解

    关于npm i几种常见命令的区别详解

    npm(Node.js Package Manager)是一个Node.js的包管理工具,用来解决Node.js代码部署问题,下面这篇文章主要给大家介绍了关于npm i几种常见命令的那点事,需要的朋友可以参考下
    2023-03-03
  • 深入理解Node.js中的进程管理

    深入理解Node.js中的进程管理

    这篇文章主要介绍了Node.js中进程管理的相关资料,文中通过示例代码介绍的非常详细,相信对大家的学习或者工作具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 详解Node.js中的模块化方法

    详解Node.js中的模块化方法

    这篇文章主要为大家介绍了Node.js的模块化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Node.js连接postgreSQL并进行数据操作

    Node.js连接postgreSQL并进行数据操作

    自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。这篇文章就给大家介绍了关于Node.js如何连接postgreSQL数据库,并进行数据操作的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • Node.js 连接 MySql 统计组件属性的使用情况解析

    Node.js 连接 MySql 统计组件属性的使用情况解析

    这篇文章主要为大家介绍了Node.js 连接 MySql 统计组件属性的使用情况解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • nodejs版本过高导致vue2版本的项目无法正常启动的解决方案

    nodejs版本过高导致vue2版本的项目无法正常启动的解决方案

    这篇文章主要给大家介绍了关于nodejs版本过高导致vue2版本的项目无法正常启动的解决方案,本文小编给大家详细介绍了如何解决这个问题,如有遇到同样问题的朋友可以参考下
    2023-11-11
  • Node.js创建Web、TCP服务器

    Node.js创建Web、TCP服务器

    这篇文章主要介绍了用Node.js创建Web服务器和TCP服务器的方法和处理技巧,需要的读者们学习一下吧。
    2017-12-12
  • Node.js如何自动审核团队的代码

    Node.js如何自动审核团队的代码

    在项目开发中,统一团队的代码风格很重要,本文介绍如何用Node.js来自动审核,来提高您的开发速度。
    2016-07-07
  • node.js中fs文件系统目录操作与文件信息操作

    node.js中fs文件系统目录操作与文件信息操作

    本篇文章给大家详细分析了node.js中fs文件系统目录操作与文件信息操作的方法以及代码详解,需要的读者可以参考下。
    2018-02-02
  • node.js中的fs.realpathSync方法使用说明

    node.js中的fs.realpathSync方法使用说明

    这篇文章主要介绍了node.js中的fs.realpathSync方法使用说明,本文介绍了fs.realpathSync的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12

最新评论