为了账号安全,请及时绑定邮箱和手机立即绑定

在强大的上传中使用 compress_image 时“文件不存在”

在强大的上传中使用 compress_image 时“文件不存在”

拉莫斯之舞 2022-10-13 19:32:22
我正在尝试对使用formidable上传的文件使用compress_images模块,但出现“文件不存在”的错误。任何想法为什么?这是来自 routes.js 的代码:app.post('/uploadPicture', isLoggedIn, function(req, res) {    const form = formidable({ multiples: true });    form.parse(req, (err, fields, files) => {        if (err) {            next(err);            return;        }        compress_images(URL+files.someExpressFiles.path+"/"+files.someExpressFiles.name                , "public/build"+files.someExpressFiles.path+"/",                 {compress_force: false, statistic: true, autoupdate: true}, false,                {jpg: {engine: 'mozjpeg', command: ['-quality', '60']}},                {png: {engine: 'pngquant', command: ['--quality=20-50']}},                {svg: {engine: 'svgo', command: '--multipass'}},                {gif: {engine: 'gifsicle', command: ['--colors', '64', '--use-col=web']}}            , function(error, completed, statistic){            console.log('-------------');            console.log(error);            console.log(completed);            res.json(statistic);            console.log('-------------');                                           });        res.json({ fields, files });    });});
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我通过修复路径并保留文件扩展名解决了这个问题。这是工作代码:


app.post('/uploadPicture', isLoggedIn, function(req, res) {

    const form = formidable({ multiples: true

         , keepExtensions: true

         , uploadDir: uploadDir

    });

    form.parse(req, (err, fields, files) => {

        if (err) {

            next(err);

            return;

        }

        var mypath = files.someExpressFiles.path;

        compress_images(mypath

                , "public/build/", 

                {compress_force: false, statistic: true, autoupdate: true}, false,

                {jpg: {engine: 'mozjpeg', command: ['-quality', '60']}},

                {png: {engine: 'pngquant', command: ['--quality=20-50']}},

                {svg: {engine: 'svgo', command: '--multipass'}},

                {gif: {engine: 'gifsicle', command: ['--colors', '64', '--use-col=web']}}

            , function(error, completed, statistic){

            console.log('-------------');

            console.log(error);

            console.log(completed);

            console.log(statistic);

            console.log('-------------');                                   

        });

        res.json({ fields, files });

    });

});


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信