Загрузить файл на Openshift

4

Я хочу запустить приложение Nodejs на Openshift и потому, что я хочу использовать постоянные файлы (например, изображения), мне нужно их хранить каталог 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'

Создана символическая ссылка, но 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 с сервера (это является ссылкой на приложение).

Обратите внимание, что я загрузил файл через SFTP (с помощью Filezilla) внутри каталога ~/app-root/data/images приложения, и симлинковая ссылка работает, потому что я вижу изображение также из ~/app-root/repo/images.

  • 0
    Это решило вашу проблему?
  • 0
    Да! Я совершенно новичок в веб-разработке и, в частности, в Nodejs. Большое спасибо!
Теги:
openshift

1 ответ

5
Лучший ответ

Самый простой способ - app.use().

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню