:image => StorageRoom::Image.new_with_filename(path)
我必須得到圖像的路徑。到目前爲止,我已經手動指定路徑,它的工作,現在我已經把heroku,但它顯示加載錯誤 - 沒有這樣的文件存在。 如何獲得本地系統使用瀏覽按鈕的路徑值。我怎樣才能得到文件的路徑?
:image => StorageRoom::Image.new_with_filename(path)
我必須得到圖像的路徑。到目前爲止,我已經手動指定路徑,它的工作,現在我已經把heroku,但它顯示加載錯誤 - 沒有這樣的文件存在。 如何獲得本地系統使用瀏覽按鈕的路徑值。我怎樣才能得到文件的路徑?
您的問題可能不會涉及到路徑名,但這樣的事實,Heroku的具有隻讀文件系統。如果您嘗試在Heroku應用程序中將文件寫入磁盤,則無法正常工作 - 文件不會被保存。
例外是「temp」目錄。你可以那裏保存文件,但它們不保證持續時間比單個請求的持續時間更長。
您試圖打開的文件實際保存在您的Git倉庫中嗎?如果是這樣,它將在你的Heroku應用程序的磁盤上,你應該可以打開它。
要查看的文件系統佈局的樣子在你的Heroku的情況下,您可以創建這樣一個控制器方法:
render :inline => Dir['**/*'].inspect
實際上沒有文件不存在於git倉庫中。我想從用戶瀏覽器中獲得 – 2012-07-25 12:17:46
File.expand_path
參考:http://saaridev.blogspot.com/2006/11/ruby-finding-absolute-path-of-running.html
其實我已經把我的文件放在服務器上,當我運行它時,它在那臺機器上查找文件。但是我想要的是,它必須在機器中搜索它所在的位置。 – 2012-07-25 12:10:42
你並不需要完整的路徑。就客戶端機器中的文件路徑關注文件上傳而言,該路徑無關緊要,因爲它會爲用戶提供安全風險。
大多數現代瀏覽器都不會發送文件上傳的文件路徑。你可以使用Javascript或Flash獲得路徑,但我仍然沒有看到這樣做的邏輯。
當用戶點擊提交按鈕時,瀏覽器至少應該向您發送帶有文件數據的文件名以及一系列其他信息,如MIME類型。您的Web服務器會將文件寫入磁盤或在內存中處理它,前提是您擁有無限的內存資源。有關這方面的更多信息,請參閱文件上傳RFC 1867。
現在我可以清楚地告訴你。考慮一下我們可以放置一些附件的yahoomail。它從用戶系統獲取文件並將其保存在郵件中。同樣,我的ruby代碼位於遠程服務器,我希望它從用戶系統獲取文件並將其保存在服務器的臨時目錄中。 – 2012-07-25 13:41:49
非常感謝。 – 2012-07-25 13:55:36
'我怎樣才能得到使用瀏覽按鈕本地系統的路徑值。這是否意味着在用戶的瀏覽器文件的路徑值? – 2012-07-25 12:12:46
是的。我想從用戶瀏覽器 – 2012-07-25 12:15:38