Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 目录上的非法操作,打开_Javascript_Node.js - Fatal编程技术网

Javascript 目录上的非法操作,打开

Javascript 目录上的非法操作,打开,javascript,node.js,Javascript,Node.js,我想使用mkdirp,创建一个目录并将文件保存在其中。在板的内部将创建并重新使用这些文件夹(如果存在) const fs = require('fs') const mkdirp = require('mkdirp') // Decode image then save to local storage const decodeBase64Image = (string, plateNumber) => { let regex = /^data:.+\/(.+);base64,(.*

我想使用
mkdirp
,创建一个目录并将文件保存在其中。在
板的内部
将创建并重新使用这些文件夹(如果存在)

const fs = require('fs')
const mkdirp = require('mkdirp')

// Decode image then save to local storage
const decodeBase64Image = (string, plateNumber) => {
  let regex = /^data:.+\/(.+);base64,(.*)$/
  let matches = string.match(regex)
  let ext = matches[1]
  let data = matches[2]
  let buffer = new Buffer(data, 'base64') // I cant use Buffer.alloc()

  let pathForImages = `plates/${plateNumber}`

  saveImagesToPath(pathForImages, ext, buffer)
}


const saveImagesToPath = (pathForImages, ext, buffer) => {
  mkdirp(pathForImages, function (err) {

    fs.writeFileSync(pathForImages, 'data.' + ext, buffer) 

  })
}

let string = "data:image/gif;base64,R0lGODlhPQBEAPeoAJosM//AwO/AwHVYZ/<SHORTEN>w=="

// Performing it all
decodeBase64Image(string, 'HGT5KU')

基本上,用车牌号的名称为“车牌”创建一个子文件夹,并将数据保存在该文件夹中:
plates/HGT5KU/foo.png
其他:
plates/GFTYU7/bar.jpg

您告诉
fs.writeflesync
写入目录,而不是目录中的文件:

mkdirp(pathForImages, function (err) {
  fs.writeFileSync(pathForImages, 'data.' + ext, buffer) 
// ----------------^^^^^^^^^^^^
})
那当然会失败。您需要将文件名添加到路径:

mkdirp(pathForImages, function (err) {
  const filename = /*...create appropriate filename...*/;
  fs.writeFileSync(pathForImages + "/" + filename, 'data.' + ext, buffer) 
})

旁注:

  • 忽略错误通常不是好的做法
    mkdirp
    可能会失败,您需要检查
    err

  • 由于
    mkdirp
    是异步的,因此在其中使用同步调用是毫无意义的,并且不必要地束缚了JavaScript线程。只需使用
    writeFile
    。通常,在没有充分理由使用函数的情况下,避免使用
    xyzync
    函数

  • 最好也测试
    writeFileSync
    /
    writeFile
    中的错误。:-)


  • 您告诉
    fs.writeFileSync
    写入目录,而不是目录中的文件:

    mkdirp(pathForImages, function (err) {
      fs.writeFileSync(pathForImages, 'data.' + ext, buffer) 
    // ----------------^^^^^^^^^^^^
    })
    
    那当然会失败。您需要将文件名添加到路径:

    mkdirp(pathForImages, function (err) {
      const filename = /*...create appropriate filename...*/;
      fs.writeFileSync(pathForImages + "/" + filename, 'data.' + ext, buffer) 
    })
    

    旁注:

  • 忽略错误通常不是好的做法
    mkdirp
    可能会失败,您需要检查
    err

  • 由于
    mkdirp
    是异步的,因此在其中使用同步调用是毫无意义的,并且不必要地束缚了JavaScript线程。只需使用
    writeFile
    。通常,在没有充分理由使用函数的情况下,避免使用
    xyzync
    函数

  • 最好也测试
    writeFileSync
    /
    writeFile
    中的错误。:-)


  • 请将路径中的文件名与文件数据一起使用

    例:


    请将路径中的文件名与文件数据一起使用

    例:


    是的,例如,我删除了
    err
    ,但它就在那里。但是是的,我现在明白了。谢谢我是这样做的:“fs.writeFile(uu dirname+
    /../${pathForImages+'/data.+ext}
    ,buffer,function(err){})”代码高亮显示的不是很好,但您可以理解。谢谢again@Sylar:不用担心。顺便说一句,如果您需要在注释中的代码范围内添加反勾号,您可以在范围内使用两个反勾号来引用它,而不仅仅是一个:
    fs.writeFile(uu dirname+`/./${pathForImages+'/data.+ext}`,buffer,function(err){/code>这是反勾号反勾号。是的,例如,我删除了
    err
    ,但它就在那里。但是是的,我现在明白了。谢谢我是这样做的:“fs.writeFile(uu dirname+
    /../${pathForImages+'/data.+ext}
    ,buffer,function(err){})”代码高亮显示的不是很好,但您可以理解。谢谢again@Sylar:不用担心。顺便说一句,如果您需要在注释中的代码范围中添加反勾号,您可以在范围周围使用两个反勾号来引用它,而不仅仅是一个:
    fs.writeFile(uu dirname+`/./${pathForImages+'/data.+ext}`,buffer,function(err){code>这是反勾号反勾号。