2013-06-06 31 views
1

我有一個下載按鈕的jsp形式。每當用戶點擊該按鈕,它將下載一個PDF文件和彈出式窗口。我使用鉻瀏覽器。我的下載位置是如何打開最新下載的文件

C:\Users\gt\Downloads 

爲此,我使用以下代碼從該位置打開。

String filePath=System.getProperty("user.home")+"\\Downloads\\"+pdfname; 
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " +filePath); 

現在,當用戶點擊下載按鈕,PDF文件將得到在該位置由名稱保存像F90CR0010-HBR-C-4.pdf,我的代碼將正確打開此。

當用戶第二次再次點擊下載按鈕時,它將保存爲像F90CR0010-HBR-C-4 (1).pdf但我的代碼將只打開舊的舊文件。因爲名稱是唯一的。我需要打開最新下載的文件。

任何想法如何打開最新下載的文件??我有一個想法,我可以將當​​前時間添加到我的pdfname,所以它將是唯一的。但我的要求是,PDF名稱應該只是這樣。

+0

如果用戶更改默認文件名會發生什麼? IE瀏覽器如果我將它保存爲test.pdf,它仍然會打開嗎?換句話說,你如何爲變量pdfname創建值? –

+0

用戶不會更改pdf的名稱。在IE中,每次它都要求打開保存,但是在Chrome中我沒有看到任何類似的內容。任何用戶都希望在下載後彈出pdf文件 –

回答

1

如果你知道基本文件名是什麼(在你的案例F90CR0010-HBR-C-4.pdf),那麼你可以使用一個簡單的正則表達式來檢查形式爲F90CR0010-HBR-C-4\(\d+\).pdf的字符串。如果你找到一個,那麼只需找出哪一個具有最大數字並打開那個。

它不是很漂亮,但它的工作原理。此外,從技術上講,可以通過製作自己的文件F90CR0010-HBR-C-4(999999).pdf來「破解」這個文件,但我猜測你並不在乎。

+0

基本文件名不必總是那樣,但它會採用這種格式。我的文件名正則表達式類似於[[a-zA-Z] [0-9] [0-9] CR [0-9] [0-9] [0-9] [0-9] - [0 -9] [0-9] [0-9] - [0-9] [0-9]' –

+0

那麼我應該如何在這裏定義變量'd'? –

+1

否 - \ d是一個正則表達式字符類。它基本上是[0-9]的一個快捷方式。查找更多信息[here](http://www.regular-expressions.info/reference.html)。 –