关于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代码
调用该方法
【关于require('mkdirp')创建文件夹】
文章图片
推荐阅读
- 关于elementUI的table设置fixed后样式错乱问题
- shiro|Shiro之@RequiresPermissions注解原理详解
- Python后端关于SQL的where条件处理
- 数据结构与算法|315,关于《C程序设计伴侣》一书致人民邮电出版社的公开信
- 关于 Jupyter Notebook 中 No module named ‘torch‘ 的解决办法
- JAVA高并发程序设计|多线程关于无锁的线程是否安全问题
- 关于Canvas API的学习
- linux添加临时环境变量,关于linux(设置临时环境($ PATH))
- zabbix|关于zabbix5.0页面出现中文乱码解决方案,已解决
- 关于Python中格式化符号的基本使用方法说明