我使用openshift_data_目录来存储用户上传的图像,因为部署时不会重新编写此目录。我已经设置了一个符号链接,用于引用标记中的目录:

app.use('/media', express.static(process.env.OPENSHIFT_DATA_DIR + '/media/'))

然后我可以在标记中使用它,如下所示:
<img src="media/images/xyz.jpg" />

这在本地非常有效,但是,当我部署时,在清除浏览器缓存之前,我会在这些图像上获得404。我怀疑这和它有什么关系,但如果有帮助的话,我在前端使用角度,这些图像路径更像这样:
<img src="media/images/{{user.profileImage}}" />

我对服务器管理知之甚少,任何帮助/想法/无论什么都非常感激。

最佳答案

@科雷达利给我指出了正确的方向,但我想把我的完整解决方案作为任何遇到这种情况的人的答案。
我的问题确实是因为我的应用程序可以跨Gears扩展,而且这些Gears不共享一个公共文件系统,甚至在openshift_data_dir中也是如此。在研究中我发现了cloudinary。node api非常易于使用,而且它们在其免费计划中提供了大量的存储空间。更不用说那些图像处理工具了,到目前为止,这些工具似乎都在摇摆不定。
我正在做这样的上传:

cloudinary.uploader.upload(req.files.file.path, function (result)
{
    if (result)
    {
        var thumbUrl = cloudinary.url(result.public_id + '.' + result.format, { width: 100, height: 100, crop: 'fill' });

        res.json({
            success: 1,
            successMessage: 'Successfully uploaded file: ' + req.files.file.originalname,
            fileName: req.files.file.name,
            photoUrl: result.url,
            thumbUrl: thumbUrl
        });
    }
// Using the original filename as cloudinary's public_id
}, { use_filename: true});

在客户端列出我上传的资源,如下所示:
cloudinary.api.resources(function (result)
{
    if (result)
    {
        var files = [];

        async.each(result.resources, function (file, next)
        {
            var thumbUrl = cloudinary.url(file.public_id + '.' + file.format, { width: 100, height: 100, crop: 'fill' });
            files.push(thumbUrl);
            next();
        }, function (err)
        {
            if (err) console.log(err);
            res.json({ success: 1, files: files });
        });
    }
});

10-06 06:08