在Heroku Node.js应用程序上上传图像时出错

时间:2018-11-17 05:58:56

标签: node.js heroku formidable

路线-

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”

1 个答案:

答案 0 :(得分:0)

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

您可以在应用启动时使用类似mkdirp的包来创建目录,也可以在本地创建目录并创建提交的空占位符文件(例如,名为.placeholder)。到您的Git存储库中(因为Git仅处理文件,而不处理目录,因此您无法向存储库中添加完全空的目录)。