2014-04-18 53 views
4

我想在Openshift上啓動一個Nodejs應用程序,因爲我需要使用持久性文件(如圖像),我需要將它們存儲在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'));