使用fs-extra写入文件在Windows 10上失败。outputFile method应该在写入之前创建任何丢失的目录,但是它会抛出错误。我知道Downloads目录已经存在了。
错误:ENOENT:没有这样的文件或目录,打开' C:\ Users \ josh \ Downloads \ 2018-01-13_15:14:11.png'
const fs = require('fs-extra')
const app = require('electron').remote.app
const moment = require('moment')
let dataURL = this.$.canvas.toDataURL()
let filename = moment().format('YYYY-MM-DD_HH:mm:ss') + '.png'
let buffer = new Buffer(dataURL.replace('data:image/png;base64', ''), 'base64')
let filepath = path.resolve(app.getPath('downloads'), filename)
fs.outputFile(filepath, buffer, err => {
if (err) {
console.error(err)
}
})
答案 0 :(得分:3)
您不能在Windows上的文件名中使用冒号':'。
来自Naming Files, Paths, and Namespaces:
使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:
以下保留字符:
- < (小于)
- > (大于)
- :(冒号)
- “(双引号)
- /(正斜线)
- \(反斜杠)
- | (竖杆或竖管)
- ? (问号)
- *(星号)
- 整数值为零,有时也称为ASCII NUL字符。
- 整数表示形式在1到31范围内的字符,但允许使用这些字符的备用数据流除外。有关文件流的更多信息,请参阅文件流。
- 目标文件系统不允许的任何其他字符。