2014-04-18 2 views
4

Я хочу запустить приложение Nodejs на Openshift и потому, что я хочу использовать постоянные файлы (например, изображения) Мне нужно сохранить их в каталоге OPENSHIFT_DATA_DIR.Загрузить файл на Openshift

Я сделал это 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 с сервера (this ссылка на приложения) ,

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

+0

Решила ли ваша проблема? – rpax

+0

Да! Я совершенно новичок в веб-разработке и, в частности, с Nodejs. Большое спасибо! –

ответ

5

Самый простой способ - использовать app.use().

app.use('/images', express.static(process.env.OPENSHIFT_DATA_DIR+'/images')); 
Смежные вопросы