2011-05-07 104 views
2

我正在使用下面的代碼下載文件。 我可以動態創建的文件夾和下載文件到每個文件夾requiredKeyWords使用jquery創建文件夾

$.each(requiredCities,function(keya,valb){ 
     $.each(requiredKeyWords,function(keyc,vald){ 
      var timerId = setInterval(function(){ 
      download(...); 
      clearInterval(timerId); 
      }, 4000*(i++));  
     }); 
    }); 
}); 

function download(url){ 
    ... 
} 

的每個類別謝謝

+0

你想在客戶端操作系統中創建文件夾? – 2011-05-07 18:31:43

回答

3

號JavaScript是在瀏覽器中的沙盒,讓您能夠在用戶的計算機無法訪問。

真的,這是最好的:想象一下,每個喬和吉爾可以自動創建,移動,閱讀和改變您的計算機上的東西。這將是一個巨大的安全隱患。

+0

這不全是真的。所有的瀏覽器都可以下載,因爲用戶接受它。從問題中,我們可以確保OP永遠不會找到在用戶機器上創建特定文件夾的方式,但肯定可以在瀏覽器上開始下載。 – 2011-05-07 18:51:02

+0

@ErickPetru - 當然他可以下載,但他要求創建文件夾並將下載的文件放入其中。 – Zirak 2011-05-07 18:54:14

0

它可能在IE瀏覽器中使用ActiveX,但不能在其他瀏覽器中使用。

http://www.codeproject.com/KB/scripting/JavaScript__File_Handling.aspx

「有 實施FileSystemObject的前幾件事情要注意。由於 它也不會被 創建如果 客戶端計算機上的安全級別高的ActiveX對象。因此,網站 已被添加到受信任的站點 列表以便將ActiveX對象可以是 創建。

用戶必須在寫訪問創建文件時指定的路徑。 在存在不確定性 的情況下,最好將文件寫入 系統的臨時文件夾。爲Temp文件夾的路徑 可以用」

2

你可以使用jQuery(如ajax()post()方法)的請求,並得到與該文件內容和所需的頭一個HttpResponse找到 。很明顯,你會需要一個服務器端技術(ASP.NET,Java和PHP等)接收HttpRequest並返回HttpResponse

然後,你的瀏覽器將攔截這個響應,下載

另外,您可以簡單地將URL重定向到文件,而不需要手動發佈,就像指向此文件所示:Download File Using jQuery。在這種情況下,瀏覽器會爲您做出請求,閱讀回覆並解釋爲下載。

但是您不能指定用戶將選擇保存文件(也不是名稱)的位置。另外,用戶總是可以取消任何下載。最後,瀏覽器的安全性可以被配置爲拒絕下載。

最後重要的是要記住,瀏覽器將顯示每次下載窗口。然後,您無法同時開始10次下載。你使用Gmail嗎?如您所見,當用戶想要同時下載所有附件時,Gmail會創建一個包含所有文件的ZIP併發送該ZIP的下載。這是實現它的更好的自動化方式,但也不是你想要的。

1

幸運的是,沒有。在Web瀏覽器中運行時,JavaScript無法訪問文件系統。那將是一個巨大的安全漏洞。唯一可以做到的方式是使用ActiveX控件或Java小程序。兩種選擇都是邪惡的。