Node.js 使用fs在nodeJs中复制图像
我正在尝试将png文件从一个文件夹复制到我的nodeJs项目中的另一个文件夹。我遇到一些问题。新图像文件出现问题,无法打开。 我使用这个代码Node.js 使用fs在nodeJs中复制图像,node.js,npm,fs,Node.js,Npm,Fs,我正在尝试将png文件从一个文件夹复制到我的nodeJs项目中的另一个文件夹。我遇到一些问题。新图像文件出现问题,无法打开。 我使用这个代码 const fs = require('fs'); var inStr = fs.createReadStream(mainDir+"/"+req.body.ExRequestId+".png"); var outStr = fs.createWriteStream(mainDir+"/"+docReq._id + ".pn
const fs = require('fs');
var inStr = fs.createReadStream(mainDir+"/"+req.body.ExRequestId+".png");
var outStr = fs.createWriteStream(mainDir+"/"+docReq._id + ".png");
inStr.pipe(outStr);
使用流时,最好先等待流准备就绪,然后再使用它们并处理错误
// assuming you're using express and the app instance is bound to a variable named app
const fs = require('fs');
const path = require('path');
// ...
// helper function: returns a promise that gets resolved when the specified event is fired
const waitForEvent = (emitter, event) => new Promise((resolve, reject) => emitter.once(event, resolve));
app.post('/handle-post', async (req, res) => {
// TODO: validate the input
const { ExRequestId } = req.body;
const srcFileName = `${path.join(mainDir, ExRequestId)}.png`;
const destFileName = `${path.join(mainDir, docReq._id)}.png`;
const srcStream = fs.createReadStream(srcFileName);
await waitForEvent(srcStream, "ready");
const destStream = fs.createWriteStream(destFileName);
await waitForEvent(destStream, "ready");
const handleError = err => res.status(500).json(err);
srcStream.on("error", handleError);
destStream.on("error", handleError);
srcStream.pipe(destStream);
await waitForEvent(srcStream, 'end');
res.status(200).json({srcFileName, destFileName});
});
下面的代码段等待两个流上的ready
事件,然后将ReadStream管道传输到WriteStream并处理错误
// assuming you're using express and the app instance is bound to a variable named app
const fs = require('fs');
const path = require('path');
// ...
// helper function: returns a promise that gets resolved when the specified event is fired
const waitForEvent = (emitter, event) => new Promise((resolve, reject) => emitter.once(event, resolve));
app.post('/handle-post', async (req, res) => {
// TODO: validate the input
const { ExRequestId } = req.body;
const srcFileName = `${path.join(mainDir, ExRequestId)}.png`;
const destFileName = `${path.join(mainDir, docReq._id)}.png`;
const srcStream = fs.createReadStream(srcFileName);
await waitForEvent(srcStream, "ready");
const destStream = fs.createWriteStream(destFileName);
await waitForEvent(destStream, "ready");
const handleError = err => res.status(500).json(err);
srcStream.on("error", handleError);
destStream.on("error", handleError);
srcStream.pipe(destStream);
await waitForEvent(srcStream, 'end');
res.status(200).json({srcFileName, destFileName});
});
我还列出了一个简单的工作示例。可以找到它。尝试使用以下代码:
fs.readFile(sourcePath , function (err, data) {
if (err) throw err;
fs.writeFile(destinationPath , data , 'base64' , function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
});
尝试来自的第二种方法。如果同样的问题仍然存在,那么我猜您对原始图像本身有一些问题。@AjayDabas我尝试过,但不起作用。新映像为空您正在使用哪个版本的节点?节点从节点8.5.0添加了
copyFile
过程。试着用它来代替。查看如何使用。@ArminTaghavizad v11.0.9当我使用copyFile时,它已完成,但为空,如果您使用的是较低版本的node,则没有任何数据显示图像