首页 > 解决方案 > 在 Heroku Node.js 应用上上传图片时出错

问题描述

路线-

app.post('/add-product',(req,res)=>{
var image=randomstring.generate({
    length: 12
});
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
    var oldpath = files.pimage.path;
    var newpath = __dirname;
    var path=newpath.split('controllers');
    path=path[0]+'/public/productimages/'+image+".jpg";
    fs.readFile(oldpath, function (err, data) {
        if (err) throw err;
        // Write the file
       fs.writeFile(path, data, function (err) {
           if (err) throw err;
       });
    });
   });
});

将图像上传到 Heroku 服务器时遇到了一些问题,在 Localhost 上一切正常。但是在 Heroku 上,当我上传图片时,我的应用程序在这些行上崩溃了。

fs.writeFile(path, data, function (err) {
    if (err) throw err;
});

Heroku 日志截图:

i.stack.imgur.com/tX0Ta.png

将“/public.....”更改为“public/productimages/....”后

我得到:没有这样的文件或目录,打开'/app/public/productimages/8sRueNlG2k3F.jpg'

标签: node.jsherokuformidable

解决方案


这些错误通常是由/app/public/productimages/尚不存在的目标目录(在您的情况下为 )引起的。

您可以使用一个包,例如mkdirp在您的应用程序启动时创建目录,或者您可以在本地创建目录并创建一个空的占位符文件(.placeholder例如,名为目录,您不能将完全空的目录添加到存储库中)。


推荐阅读