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创建文件夹的资料请关注脚本之家其它相关文章!

相关文章

  • Nodejs为什么选择javascript为载体语言

    Nodejs为什么选择javascript为载体语言

    准备写一个NodeJS方面的系列文章,由浅入深,循序渐进,秉承的理念是重思想,多实践,勤能补拙,贵在坚持。本文首先来点基础知识的开篇吧。
    2015-01-01
  • 使用nodejs解析json数据

    使用nodejs解析json数据

    这篇文章主要介绍了使用nodejs解析json数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    完美解决node.js中使用https请求报CERT_UNTRUSTED的问题

    下面小编就为大家带来一篇完美解决node.js中使用https请求报CERT_UNTRUSTED的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 浅谈在node.js进入文件目录的问题

    浅谈在node.js进入文件目录的问题

    今天小编就为大家分享一篇浅谈在node.js进入文件目录的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • node.js中npm包管理工具用法分析

    node.js中npm包管理工具用法分析

    这篇文章主要介绍了node.js中npm包管理工具用法,结合实例形式分析了node.js中npm包管理工具查看、安装、更新、卸载等相关操作技巧与注意事项,需要的朋友可以参考下
    2020-02-02
  • 一文详解如何使用node执行js文件

    一文详解如何使用node执行js文件

    Node.js开发者过去通常将大多数可执行命令发布为全局的软件包,以使它们处于路径中且可被立即地执行,下面这篇文章主要给大家介绍了关于如何使用node执行js文件的相关资料,需要的朋友可以参考下
    2023-01-01
  • 详解Node使用Puppeteer完成一次复杂的爬虫

    详解Node使用Puppeteer完成一次复杂的爬虫

    这篇文章主要介绍了详解Node使用Puppeteer完成一次复杂的爬虫,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解node HTTP请求客户端 - Request

    详解node HTTP请求客户端 - Request

    Request是一个Node.jsNPM模块,它是一个HTTP客户端,使用简单功能确十分强大
    2017-05-05
  • nodejs实现聊天机器人功能

    nodejs实现聊天机器人功能

    这篇文章主要介绍了nodejs实现聊天机器人功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • node 可读流与可写流的运用详解

    node 可读流与可写流的运用详解

    这篇文章主要为大家介绍了node 可读流与可写流的运用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09

最新评论