用 fs 写入后无法读取文件
Can't read file after writing it with fs
我想读一张图片,把它写在一个文件夹里,再读一遍得到它的base64
我收到以下错误:
错误:ENOENT:没有那个文件或目录,访问 'C:\Workspace\Project\upload_storage\image.jpg'
在 Object.accessSync (fs.js:192:3)
我的代码:
const FS = require("fs");
var multiparty = require('multiparty');
var path = require('path');
function readAndWriteFile(file , newPath){
FS.readFileSync(file.path, (err, data)=>{
FS.writeFileSync(newPath, data, (err)=>{
});
});
}
function base64Encode(path,filemime) {
FS.readFileSync(path, {encoding: 'base64'}, (err, data)=>{
if (err) {
throw err;
}
return `data:${filemime};base64,${data}`;
});
}
...
var form = new multiparty.Form()
//retrieve files using multiparty form
form.parse(req, function(err, fields, files) {
var document;
const documents = files.file;
for(i=0; i<documents.length; i++){
document=documents[i];
const contentType = String(document.headers["content-type"]);
filePath = path.join(process.cwd(),'/upload_storage/',document.originalFilename);
readAndWriteFile(document,filePath);
// // convert image to base64 encoded string
const base64str = base64Encode(filePath, contentType);
console.log(base64str);
}
}
如果我评论 base64Encode 函数调用,文件就会创建。
我做错了什么?
不要在 _fileSync
中使用回调。但看起来你还是想要 copyFileSync
followed by unlinkSync
:
const fs = require('fs');
function readAndWriteFile(file , newPath){
fs.copyFileSync(file.path, newPath);
fs.unlinkSync(file.path)
}
您是否尝试阅读 fs
的文档?
this question、
中的更多阅读和示例
我想读一张图片,把它写在一个文件夹里,再读一遍得到它的base64 我收到以下错误: 错误:ENOENT:没有那个文件或目录,访问 'C:\Workspace\Project\upload_storage\image.jpg' 在 Object.accessSync (fs.js:192:3)
我的代码:
const FS = require("fs");
var multiparty = require('multiparty');
var path = require('path');
function readAndWriteFile(file , newPath){
FS.readFileSync(file.path, (err, data)=>{
FS.writeFileSync(newPath, data, (err)=>{
});
});
}
function base64Encode(path,filemime) {
FS.readFileSync(path, {encoding: 'base64'}, (err, data)=>{
if (err) {
throw err;
}
return `data:${filemime};base64,${data}`;
});
}
...
var form = new multiparty.Form()
//retrieve files using multiparty form
form.parse(req, function(err, fields, files) {
var document;
const documents = files.file;
for(i=0; i<documents.length; i++){
document=documents[i];
const contentType = String(document.headers["content-type"]);
filePath = path.join(process.cwd(),'/upload_storage/',document.originalFilename);
readAndWriteFile(document,filePath);
// // convert image to base64 encoded string
const base64str = base64Encode(filePath, contentType);
console.log(base64str);
}
}
如果我评论 base64Encode 函数调用,文件就会创建。 我做错了什么?
不要在 _fileSync
中使用回调。但看起来你还是想要 copyFileSync
followed by unlinkSync
:
const fs = require('fs');
function readAndWriteFile(file , newPath){
fs.copyFileSync(file.path, newPath);
fs.unlinkSync(file.path)
}
您是否尝试阅读 fs
的文档?
this question、
中的更多阅读和示例