2014-01-08 62 views
0

我想創建一個文件目標選擇器,就像從瀏覽器中選擇下載文件的保存目標一樣。但我不知道如何弄清楚。文件目標選擇器

我想創建一些文件並將它們保存在從用戶選擇的地方。類似於在Eclipse IDE中創建新的Java類和用於源文件夾的瀏覽器。

我發現了很多文件上傳器但這些是瀏覽特定文件而不是文件夾。

對我的問題有什麼建議嗎?我真的很感激你的建議。

特別是我更喜歡使用Java創建(但不能擺動,因爲我正在創建web項目),但我也可以使用JavaScript或其他一些有用的庫。

+0

@Andrew湯普森,我想我有時會在這上面花。我仍然是java的初學者。真的在Java EE noob。所以,我不能說JApplet,因爲沒有經驗。它可以滿足我的問題嗎?我對JFileChooser有一點了解。 – Cataclysm

+0

*「它可以滿足我的問題嗎?」* ...你真的*認爲我會建議,如果我*不*認爲是這樣嗎? –

+0

@安德魯湯普森,對不起,先生!你描述了JApplet的鏈接,所以我對我的問題含糊不清。 – Cataclysm

回答

2

鏈接如果你想定製文件在瀏覽器中下載的方式,不能通過標準瀏覽器功能完成(HTML/CSS/JavaScript)的。

取決於響應中發送要麼做兩件事情之一在文件下載Content-Disposition HTTP標頭值的瀏覽器:

  • 嘗試解析該文件根據它的擴展,使得如果該文件它的HTML,顯示它如果是xml等
  • 如果Content-Disposition設置爲attachment,它將打開一個非常基本的彈出窗口,詢問文件的保存位置,彈出窗口沒有控制或定製可能。

如果你想在瀏覽器中使用更多的功能,那麼你需要一個applet(或其他一些用戶必須安裝的插件)。

但是由於去年很大一部分瀏覽器中存在Java的安全問題,現在瀏覽器不願意運行applets,即使用戶已經安裝了Java,也需要很多用戶確認。

如果網站的用戶必須下載Java並點擊幾個彈出窗口才能使文件下載小工具正常工作,他們可能會離開該網站。

Applets是最近被淘汰的技術,所以在網絡瀏覽器中保存文件的基本彈出窗口是當前最實際的解決方案。

+0

我已經更新了文件下載的答案,而不是通過在響應中設置一個標頭,您可以觸發當前最爲默認的瀏覽器下載功能實用的解決方 –

+0

現在我意識到我無法從服務器上保存客戶端計算機上的文件。這完全不可能。我將不得不將文件作爲常規文件下載來提供,然後瀏覽器將提供用戶選擇保存文件的目錄。 – Cataclysm

1

..Java(但不可以盪鞦韆因爲我創建的Web項目)

Swing提供JApplet,所以使用和JFileChooser。有關詳細信息和示例,請參閱How to Use File Choosers

+0

*「真的在Java中noob」*然後你有一個陡峭的學習曲線!請參閱[爲什麼CS老師應該停止教授Java小程序](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)爲我的一點咆哮'在小程序上。請注意,博客文章甚至沒有說明此代碼需要進行數字簽名的事實!實際上它確實提到了它。 –

+1

哇!今天我在我的生活中找到了一位新老師。先謝謝先生。感謝您提供有用的答案和提示。我非常感謝你。 – Cataclysm

0

您可以使用JFileChooser所使用的文件類的方法,如

File a=JFileChooser.getFile(); 

要了解更多有關文件類的JFileChooser參考下

For file class

FileChooser

+0

@san krish,第二個鏈接已經死了 – Cataclysm

+0

@Cataclysm謝謝我已經更新了它:) –

1

如果你給Web瀏覽器的命令去一個URL和響應回來:

 response.addHeader("Content-Disposition", "attachment; filename=" + "\"" +doc.getFileName()+"\""); 
     response.setContentLength(doc.getData().length); 
     response.getOutputStream().write(doc.getData()); 
     response.flushBuffer(); 

(其中doc.getData()是在這種情況下,一個byte []數組)。

然後,網絡瀏覽器將檢測到附件,從文件名中推斷出類型,並向用戶顯示「保存」對話框,以允許他們決定在哪裏保存它。

0

我不確定這是否是對你的問題的答案/提示。試試

使用HTML中的標籤瀏覽文件。下面的例子將特別選擇MS Excel文件 <input type="file" name="excelFile" value="Browse For Excel File" id="excelfileId" onChange="handleFiles(this.files)" accept="application/vnd.ms-excel"/>

對於選擇文件夾(而不是文件),沒有任何直接標籤。希望this code sample可以參考。

類似的話題/查詢討論here