Node.js 如何检测图像何时保存在服务器上?
基本上,我已经完成了将图像上传到服务器(Node.js 如何检测图像何时保存在服务器上?,node.js,Node.js,基本上,我已经完成了将图像上传到服务器(文件)的过程,当我想保存图像时,我想使用名为imagemin的库来压缩图像大小,但似乎当我使用此库时,图像不可用,或者它还没有完成在文件夹中的保存 我试着压缩一个已经在同一个目录中的图像,它可以完美地压缩它,所以我几乎可以肯定问题发生了,因为图像还没有完全保存 我怎样才能解决这个问题 let saveImage = (file) => { return new Promise((resolve, reject) => { let
文件
)的过程,当我想保存图像时,我想使用名为imagemin
的库来压缩图像大小,但似乎当我使用此库时,图像不可用,或者它还没有完成在文件夹中的保存
我试着压缩一个已经在同一个目录中的图像,它可以完美地压缩它,所以我几乎可以肯定问题发生了,因为图像还没有完全保存
我怎样才能解决这个问题
let saveImage = (file) => {
return new Promise((resolve, reject) => {
let folder=__dirname + "/../gallery/";
let name_file="my_image.png";
file.mv(`${folder}${name_file}`, (err) => {
(async () => {
//at this moment my image is not avalaible
const files = imagemin([`${folder}${name_file}`], {
destination:folder,
plugins: [
imageminPngquant({
quality: [0.5, 0.6],
}),
],
});
console.log(files); //output is []
})();
resolve({ ok: true});
});
})
}
app.post("/upload_photo", [], async function (req, res) {
my_file = await saveImage(req.files.my_file);
if(my_file.ok){
return res.json({
ok: true,
message: "success!",
});
}
});
我假设一个完美的场景,在这个场景中我不会有错误,然后我将进行相应的验证。
注意:
err
始终为空,因此我没有错误。这是异步操作。你需要等待,直到它完成之前,解决你的承诺
const files = /* needs*/ await /*here*/ imagemin([`${folder}${name_file}`], {
destination:folder,
plugins: [
imageminPngquant({
quality: [0.5, 0.6],
}),
],
});
这项工作:
const fs = require('fs');
const imagemin = require('imagemin');
const imageminPngquant = require('imagemin-pngquant');
let saveImage = async (file) => {
return new Promise((resolve, reject) => {
let folder = __dirname + '/gallery/';
let name_file = 'my_image-' + Date.now() + '.png';
fs.rename(file, `${folder}${name_file}`, (err) => {
//at this moment my image is not avalaible
(async () => {
const files = await imagemin([`${folder}${name_file}`], {
destination: folder,
plugins: [
imageminPngquant({
quality: [0.5, 0.6],
}),
],
});
console.log(files); //output is []
})();
resolve({ ok: true });
});
});
};
(async () => {
my_file = await saveImage('./screenshot.png');
if (my_file.ok) {
console.log('Success');
}
})();
什么是
文件
?在调用此函数之前,问题很明显。您能分享HTTP请求处理程序的完整代码吗?为什么您不能先压缩图像,然后存储到文件夹中?@HagaiHarari我更新了我的代码ImageMin是异步的,请等待它,解析前的封装也是异步的->等待它这无法工作语法错误,bakets和Wait需要异步它现在工作了吗?除了应用程序未定义之外,没有任何错误,因为我没有实现它。在console.log(文件)之后,调用了一个函数,但它没有开始->(async()=>{
缺失;)我再次编辑了它,现在它可以工作了。对它进行了一些修改,以便能够测试它。顺便说一下:你必须手动创建gallery文件夹。我没有这些问题-我只是懒得回答;),作者的名字是yavg