2012-10-24 125 views
1

這個問題可能看起來有點愚蠢。我是網絡開發新手,我只是寫一個簡單的網絡應用程序開始。我正在使用燒瓶。該應用從一些其他網站獲取一些圖像並將其保存到文件夾「savedimages」。問題出在我將它部署到heroku後,我無法打開'savedimages'文件夾中的任何圖像。我想這是因爲該文件夾的chmod沒有設置爲755左右...那麼我該如何chmod這個文件夾?chmod heroku應用程序文件夾

謝謝!

+0

不要緊,那Heroku的應用程序有一個[臨時文件系統(HTTPS:/ /devcenter.heroku.com/articles/dynos#ephemeral-filesystem) - 寫入文件系統的任何內容都可以在沒有通知的情況下消失?如果'savedimages'是一個緩存,這可能是好的;如果沒有,您可能需要[在其他地方存儲數據](https://devcenter.heroku.com/articles/s3)。 – willglynn

+0

當應用程序處於活動狀態時,不會丟失文件系統的內容,但是一旦停止實例,所有內容都將消失。但這不是問題。出現什麼樣的錯誤?是什麼讓你說你「無法打開'savedimages'文件夾中的任何圖像? – Odi

+0

我使用urllib2從互聯網上獲取圖像,然後將其保存在'savedimages'文件夾中。但是,當我嘗試直接轉到圖像時,例如,http://example.com/savedimages/image1.jpg它顯示「Not Found 在服務器上找不到請求的URL 如果您輸入了URL請手動檢查拼寫,然後重試。「我很確定這些文件是保存的,因爲我在本地主機上進行了測試。你也可以ssh進入你的heroku應用程序,並在所有文件夾做東西? –

回答

3

這個問題最有可能不是關閉了權限 - 它很可能是Flask掛載在應用程序的根目錄下,並且您的Flask應用程序中沒有任何規則來提供圖像。嘗試添加一個規則,你的應用程序:

@app.route("/savedimages/<picture>") 
def display_picture(picture): 
    return "The picture is: {}".format(picture) 

如果顯示,然後只需改變你的回用flask.send_file

file_name = werkzeug.security.safe_join("/path/to/savedimages", picture) 
return send_file(file_name) 
+2

謝謝。這工作高明!只是一張紙條。它實際上是werkzeug.security.safe_join。但是謝謝你! –

相關問題