簡體   English   中英

從網頁寫入本地磁盤

[英]Write to local disk from web page

我正在開發一個允許多文件下載的Silverlight控件。 目前我正試圖了解瀏覽器的權限模型。

假設在網頁上,用戶在文本框中輸入本地文件夾(c:\\ temp)。 然后用戶單擊一個按鈕。

是否可以在JavaScript或Silverlight中將一組文件(存儲在服務器上)寫入用戶驅動器上的該文件夾?

來自Javascript - 沒有。 如果可能的話,從一些卑鄙小人手中安裝病毒就太容易了。

Silverlight我不知道,但我會假設寫給用戶硬盤驅動器將是非常有限和嚴格控制。

僅當瀏覽器具有可以利用的安全漏洞時。

由於您所描述的功能允許任何網頁對訪問者的系統做任何不好的事情,因此在這個時代,任何人都無法故意實現對本地磁盤的任意訪問。

您可以做的第二件事是讓用戶下載ZIP存檔並告訴他在任何他喜歡的地方解壓縮。

警告:大多數答案都不正確。

可以在MSIE(使用ActiveX FileSystemObject)和Firefox(使用nsIFileOutputStream)中通過Javascript寫入文件。 在這兩種情況下,將向用戶呈現安全對話,其可以允許或拒絕讀取或寫入。

我已經使用Scripting.FileSystemObject來執行此操作。 僅適用於IE,並且只能使用非常輕松和不安全的安全設置,但它可能適用於企業中的Intranet站點,至少它適用於我。

Google Gears有一種方法可以進行客戶端存儲。

http://gears.google.com/

那就是說,我懷疑它會做你正在嘗試的事情。 我認為你最好讓服務器端的東西下載文件並將它們放入客戶端的.zip文件中,然后再傳遞給它們。

正如之前回答的那樣,這必須通過服務器端完成,Silverlight和JavaScript都是沙箱來禁用這種類型的安全漏洞。 我建議將文件打包到服務器上的zip存檔中,然后下載zip存檔。

您可以通過ActiveX控件或Java小程序執行此操作。 無論哪種方式,您都必須使用代碼簽名證書對項目進行簽名。 您可以使用自簽名證書,但警告對話框會更響亮。

然后,您可以使用Javascript調用已簽名的控件並保存文件。 在創建這樣的applet時要非常小心。 您不希望允許任何其他網站使用此控件,因此控件必須實現以下某些功能:

  1. 只能在某個網站上工作。
  2. 僅在特定位置保存文件。
  3. 提示用戶在哪里保存文件,以便他們知道這種情況正在發生,並且不會在后台靜默發生。

你可以找到一個可以用Javascript控制的控件或applet。

這並不直接回答這個問題,但Adobe Flex 4允許使用FileReference類。

Silverlight 4 OOB允許訪問用戶的文檔目錄。

我不相信這是可能的,因為它會造成無數的安全問題。 我能看到這種安全的唯一方法是混合用戶權限和某種方式驗證(在客戶端)網站的真實性以及他們想要下載到我的計算機的文件。

你可以做的一種方法是觸發“FileSaveDialog”,但我認為這不是你想要的。 也許首先打包文件集然后觸發是實現目標的方法。 Silverlight僅允許每個域1mb的隔離存儲空間,絕對不會讓站點訪問客戶端硬盤驅動器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM