javascript - 在 Openshift 上上传文件

标签 javascript bash openshift

我想在 Openshift 上启动一个 Nodejs 应用程序因为我想使用持久文件(如图像),所以我需要将它们存储在 OPENSHIFT_DATA_DIR 目录中。

我已经为构建阶段制作了这个 action_hooks:

#!/bin/bash

#First of all I check if the dir exists. If not I create it
if [ ! -d $OPENSHIFT_DATA_DIR'images' ]
then
    echo "Create "$OPENSHIFT_DATA_DIR'images'
    mkdir -p $OPENSHIFT_DATA_DIR'images'
fi

#Create symlink
echo "Create link: "$OPENSHIFT_REPO_DIR'images -> '$OPENSHIFT_DATA_DIR'images'
ln -sf $OPENSHIFT_DATA_DIR'images' $OPENSHIFT_REPO_DIR'images'

创建了符号链接(symbolic link),但index.html无法访问上传的文件

这是我的(愚蠢的)index.html 测试页:

<html>
    <head>
        <title>Test page</title>
    </head>
    <body>
        <div id="image_container"/>
        <div id="button_container"/>
        <script type="text/javascript">
            var loaded = false
            var debug = false
            var clickAction = function() {
                if (debug) {
                    alert(process.env.OPENSHIFT_DATA_DIR)
                }
                else {
                    if (!loaded) {
                        var container = document.getElementById("image_container")
                        var image = document.createElement("img")
                        image.src = "images/montagna.jpg"
                        image.id = "img001"
                        container.appendChild(image)
                        loaded = true
                    }
                    else {
                        var container = document.getElementById("image_container")
                        var image = document.getElementById("img001")
                        container.removeChild(image)
                        loaded = false
                    }
                }
            }
            window.onload = function() {
                var container = document.getElementById("button_container")
                var button = document.createElement("input")
                button.type = "button"
                button.name = "button1"
                button.value = "clickme"
                button.setAttribute("onclick", "clickAction()")
                container.appendChild(button)
            };

        </script>
    </body>
</html>

当我点击按钮时,我收到来自服务器的 404 错误(this 是应用程序的链接)。

请注意,我已经通过应用程序的 ~/app-root/data/images 目录中的 SFTP(使用 Filezilla)上传了文件,符号链接(symbolic link)似乎有效,因为我可以看到图片也来自 ~/app-root/repo/images

最佳答案

最简单的方法是使用 app.use() .

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

关于javascript - 在 Openshift 上上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150714/

相关文章:

javascript - 在 Typescript 中通过 Webpack 导入 Jade 模板

javascript - ReactDOM.render() 中的一个根元素还是整个布局?

mysql - 在 Openshift 上使用 Sequel 连接到 mysql

security - 固定Docker套接字的选项

javascript - 复杂 HTML 的数据表导出(python 变形)

regex - Sed 附加正则表达式捕获组

bash - 关于 bash 文件的混淆存在测试操作符

bash - 如何使用shell脚本创建csv文件

dns - 带 Openshift 的裸域

javascript - 编写 JavaScript 抽象抽象 - 这明智吗?