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>这是反勾号反勾号。