Electron无法在Windows 10上写入文件

时间:2018-01-13 23:20:43

标签: node.js filesystems windows-10 electron

使用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)
    }
})

1 个答案:

答案 0 :(得分:3)

您不能在Windows上的文件名中使用冒号':'。

来自Naming Files, Paths, and Namespaces

  

使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:

     
      
  • 以下保留字符:

         
        
    • < (小于)
    •   
    • > (大于)
    •   
    • :(冒号)
    •   
    • “(双引号)
    •   
    • /(正斜线)
    •   
    • \(反斜杠)
    •   
    • | (竖杆或竖管)
    •   
    • ? (问号)
    •   
    • *(星号)
    •   
  •   
  • 整数值为零,有时也称为ASCII NUL字符。
  •   
  • 整数表示形式在1到31范围内的字符,但允许使用这些字符的备用数据流除外。有关文件流的更多信息,请参阅文件流。
  •   
  • 目标文件系统不允许的任何其他字符。
  •