2015-06-01 25 views
0

在我的Java Web應用程序中,我有一個自動腳本發送一封電子郵件,並且在此電子郵件中我需要附加一個文件。我目前在公開的「資產」文件夾中,但是我無法在我的Java代碼中傳遞文件路徑而不使用絕對路徑(我的開發服務器是我的本地工作站,因此路徑與此完全不同)。在哪裏存儲用於電子郵件附件的文件在Java中

有沒有辦法使用網址(http://domain.com/assets/file.pdf)或相對路徑附加文件?根據Java,我目前的工作目錄是「C:\ Users \ USERNAME \ GlassFish_Server \ glassfish \ domains \ domain1 \」,但顯然沒有任何用處 - 沒有Java類,沒有Web文件,沒有任何東西。或者我應該把文件放在其他地方......就像發送電子郵件的腳本所在的文件夾一樣,這似乎是錯誤的。

+0

如果我正確地指出你的問題:你想要附加的文件需要在你的類路徑中,所以確保文件所在的文件夾也包含在你的類路徑中。 – Jakub

回答

0

這取決於您的部署。你可以使用ClassLoader.getResourceAsStream(...)來檢索你的文件內容(javadoc相當不錯,它有助於知道你可以使用this.getClass()。getClassloader())獲得一個類加載器。

您可以使用配置文件(以及任何良好的配置管理庫)來指定資源文件的絕對路徑。如果你知道文件相對於執行路徑的位置,你可以說「new File(」「)。getAbsolutePath()」,然後附加你的相對路徑。

+0

因此,如果我的軟件包是org.orgname.project,我應該把pdf文件放在類似org.orgname.project.lib的目錄中?然後,如果我想將pdf附加到電子郵件中,請執行以下操作:String filename = this.getClass()。getClassLoader()。getResource(「/ lib/filename.pdf」)。getPath()? (如果這是正確的,那麼它仍然不起作用 - nullPointerException仍然存在) – Felix

+0

如果您將目錄存儲在org.orgname.project.lib中,那麼您的資源路徑爲「org/orgname/project/lib/filename.pdf」 –

+0

在樣式註釋中,鏈接在.getResource之後只是要求一個空指針異常。獲取資源,檢查null,然後如果它不是null,getPath()或獲取內容。 –

相關問題