无法在 OpenShift 上上传文件

Unable to upload file on OpenShift

我正在使用 CKEditor 插件将图像上传到我的 OpenShift 应用程序,但该应用程序不会上传文件。它在本地运行良好,但我无法确定导致问题的原因。好像找不到目录。

==> app-root/logs/nodejs.log <== POST /uploader?CKEditor=content&CKEditorFuncNum=1&langCode=en - - ms - - 新路径:/var/lib/openshift/57cdb2770c1e660d0b000003/app-root/runtime/repo/routes/../public/uploads/test.jpg

{ 错误: { [错误:ENOENT,打开'/var/lib/openshift/57cdb2770c1e660d0b000003/app-root/runtime/repo/routes/../public/uploads/test.jpg'] 错误号:34, 代码:'ENOENT', 路径:'/var/lib/openshift/57cdb2770c1e660d0b000003/app-root/runtime/repo/routes/../public/uploads/test.jpg'}}

这是处理上传的路由。

var express = require('express');
var router = express.Router();
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var fs = require('fs');

router.post('/', multipartMiddleware, function(req, res) {

  fs.readFile(req.files.upload.path, function(err, data) {

    var newPath = __dirname + '/../public/uploads/' + req.files.upload.name;

    console.log('new Path:', newPath);

    fs.writeFile(newPath, data, function(err) {

      if (err) console.log({
        err: err
      });
      else {
        html = "";
        html += "<script type='text/javascript'>";
        html += "    var funcNum = " + req.query.CKEditorFuncNum + ";";
        html += "    var url     = \"/uploads/" + req.files.upload.name + "\";";
        html += "    var message = \"Uploaded file successfully\";";
        html += "";
        html += "    window.parent.CKEDITOR.tools.callFunction(funcNum, url, message);";
        html += "</script>";

        res.send(html);
      }
    });
  });
});

module.exports = router;

不确定 OpenShift 是如何工作的,但也许您没有将 public/uploads 目录添加到 project/repo/however 它安装在 OpenShift 服务器中。