2011-11-09 55 views
1

我進入這種理解這不會起作用,但我試圖找出它爲什麼不起作用,並可能是一種解決辦法。java ftp applet

無論如何,我嘗試在applet中使用java.io.File對象,並且一旦我做了,就會得到一個錯誤... Anyyway,純粹基於猜測,我相信這個問題存在(至少部分),因爲每次Applet運行時都有兩個文件系統,虛擬機無法在本地計算機的文件系統和服務器之間進行選擇......我也相信(基於這樣一個事實,即當我試圖導入java.io. *時,導致這個問題的另一個原因是如果我在applet中定義了'File',並且以某種方式指定了JVM使用的文件系統,那麼是否可以解決我的一個或兩個問題?如果是, ,我將如何去做呢?

+1

投票移動到StackOverflow。 – RedGrittyBrick

回答

1

Java小程序運行在「沙箱」 - 他們不會et訪問本地文件系統(除非您簽名並跳過一些環)

由於applet在「客戶端」執行,因此它們不會在服務器和客戶端文件系統之間產生混淆 - 服務器文件系統完全無法訪問如通過諸如FTP或HTTP之類的協議進行中介)。

甲骨文say

如果你試圖運行小程序例子,你肯定看到了錯誤,當你點擊點擊Me按鈕。這是因爲Java 2 Platform安全性不允許小程序在沒有明確權限的情況下寫入和讀取文件。

小應用程序不能訪問本地系統資源,除非它被特別授予訪問權限。


更新:一些澄清的概念:

A 「Java的FTP的小程序」 是一個Java小程序是存儲在服務器上的.jar文件在那裏可以提供一些Java字節碼通過像Apache或IIS的web服務器到網絡瀏覽器,如IE瀏覽器,火狐,Chrome,Safari瀏覽器等

的用法是這樣的

  • 一個人計算機上的網頁瀏覽器使用HTTP從服務器加載網頁。
    • 它發送一個HTTP請求
    • 它接收一個HTML響應
  • 作爲它分析並顯示該HTML「頁」時,瀏覽器在它的標籤發現指一個applet
  • 腹板瀏覽器使用HTTP從服務器請求小程序的jar文件。
  • Web服務器返回jar文件內容的副本。
  • 瀏覽器啓動Java虛擬機(JVM)
  • 瀏覽器手中的小程序jar文件內容到JVM
  • 個人計算機(不是服務器)會在JVM上運行的小程序
  • 瀏覽器顯示小程序並將鼠標點擊和按鍵傳遞迴JVM。
  • 該小程序向運行FTP守護程序/服務的服務器發送FTP連接請求
  • 服務器響應。
  • 該小程序發送文件的FTP請求。
  • 服務器發送一個包含該文件的FTP響應。
  • 該小程序對該文件做了一些有用的處理。

該小應用程序在個人計算機上運行,​​只有當該小程序已簽名並且被該個人計算機授予許可時才允許訪問該計算機上的文件。

如果個人計算機單獨使用使服務器上的某些目錄看起來像個人計算機上的本地目錄(例如驅動器映射)的文件共享協議(例如NFS或SMB) - 那麼本地應用程序(例如一個簽名的小程序)可能被允許使用普通的普通文件IO來訪問這些文件。這可能並非如此。

小程序永遠不會直接訪問服務器上的文件。

小應用程序可以通過使用網絡協議(不是常規文件IO)與服務器上的服務進行通信某些服務(例如基於HTTP和FTP的服務)可以允許在服務器上傳輸文件內容的副本。

+0

哦,這是有道理的,如果任何舊的小程序可以在你的計算機上......但我甚至不試圖使用計算機的文件系統......如何訪問服務器的文件系統「intermediated一些協議,如FTP或HTTP「? – FALL3N

+0

@ FALL3N:我會使用類似http://commons.apache.org/net/apidocs/org/apache/commons/net/ftp/FTPClient.html來訪問服務器上的文件。 – RedGrittyBrick

+0

哦謝謝..嗯,酷,我從來沒有聽說過FTPServer類..這真棒!那麼是否有一種方法來指定服務器的文件系統,另一種方法是獲得訪問系統的臨時權限? – FALL3N