2011-02-01 93 views
5

我一直在使用Microsoft Technet網站,您可以通過單擊頁面上的鏈接下載ISO文件。元素是這樣的:javascript下載鏈接如何工作?

<a href="javascript:void(0)" onmouseout="HideToolTip()" 
    onmouseover="ShowToolTip(event,'Click here to download.')" 
    onclick="javascript:RunDownload('39010^313^164',event)" 
    class="detailsLink">Download</a> 

我無法找到腳本的RunDownload()方法。我想知道它可能做什麼。我通常是指當我提供了一個鏈接有人下載我提供錨它:

<a href="www.foo.com/mymp3.mp3">download</a> 

但是,這是不同的工作是什麼腳本在做什麼?因爲即使我運行「Fiddler」,我也無法看到實際的下載位置。

+0

有許多方法可以起作用。 – Pointy 2011-02-01 15:04:05

+0

只有當您的服務器上存儲爲文件並隨後存在一個可用於直接訪問它的路徑時(如您的示例中的www.foo.com/mymp3.mp3),錨點才能正常工作。例如,如果您將文件的二進制內容存儲在服務器上的數據庫中,則無法這樣做,因爲不存在這樣的路徑。 – 2011-02-01 15:09:10

回答

2

下載位置可以是URL重寫的路徑。這意味着HTTP Post可能會提供一些參數,並且Web服務器或Web應用程序中的某個HTTP處理程序可能會從HTTP請求中獲取一些參數,並將文件字節寫入HTTP響應,該響應會絕對隱藏文件位於實際服務器的文件系統。

也許這是幕後的事情,並且阻止你知道文件的位置。

例如,我們可以有這樣的: http://mypage.com/downloads/1223893893

而且你的要求,如「whatever.exe」的可執行文件下載到硬盤上。 「http:/mypage.com/downloads/whatever.exe」在哪裏?其實它不存在。它是保存在某個記錄的長數據庫中的字節數組,「mypage」Web應用程序處理對標識爲「1223893893」的文件的請求,該文件可以是標識符,日期時間或任何參數的組合。

8

沒有「javascript下載」鏈接。 Javascript可以打開一個新窗口,或模擬點擊鏈接。

你必須找到的是這個點擊所觸發的功能會導致哪些網址。

這裏有一個如何做到這一點的例子:

假設我們有一個:

<a id="download">download Here §§§</a> 

那麼這jQuery代碼:

$('#download').click(function() { 
    window.location.href = 'http://example.org/download/ISO.ISO'; 
}); 

會重定向到URL http://example.org/download/ISO.ISO。這個url是否開始下載取決於HTTP頭和你的瀏覽器,而不是JavaScript做什麼。

0

你是說你在js中有StartDownload的問題,在Javascript中沒有這樣的功能。所以我覺得你的下載錨不工作
什麼ü可以做的就是把下載屬性的錨標記爲真,它會正常工作我有一個例子

<a href="video.mp4" download="true">Download</a> 

警告:如果你願意把下載屬性,HREF會像http://google.com網站不會打開,但下載的網頁
好吧,如果你想開始下載的背景有幾個選項,但最簡單的一個:

<iframe name="site_back_load" style="display:none;"></iframe> 
<a href="File.mp4" download="true" target="site_back_load">start download</a>