2011-01-07 42 views
2

我一直需要在文件超鏈接旁邊顯示下載大小。只有有問題的文件每天都會重建,文件大小可能會經常更改。所以不用多說幾個月的大小錯了。我不會每天更新我們的網站以顯示不必要的信息。顯示文檔或下載超鏈接旁邊的實際文件大小

代替

<a href="file.xxx">click here to download (20mb)</a>

我寧願

<a href="file.xxx">click here to download [sizeof('file.xxx')]</a>

最好的解決辦法來基於JavaScript或類似。

回答

0

我想到了更多...我閱讀了所有的答案,然後點擊了一些鏈接從其他網站下載各種文件。在我點擊對話框中的「下載」後,瀏覽器告訴我這個大小。

我打算改變心態,甚至有必要在鏈接中加入。

我們的網站有這麼多沒有意義的...('其他網站有這個功能')...我替換的人沒有意識到或關心他的那些其他網站是用CMS構建的所有這一切都自動例如:每次保存文檔時,他都在每頁最後更新:01/01/1900'的底部進行了硬編碼。

編輯:
我不喜歡我的措辭這個答案有一天的方式。我意識到,沒有必要在超鏈接中包含文件大小,當所有主流瀏覽器都會在您點擊「下載」後指出文件大小。就像我上面的例子,有很多例子,我可以找到在我之前的開發人員或網站管理員添加額外的工作,通過包括「功能」像filesizes/timestamps /等...在我看來,添加這樣的功能/是:

  • 沒有ROI
  • 可能永遠是錯的
  • 需要有不斷的維護
  • 廉價的方式來改善自己的網站「動態」
  • 的最後一件事你做
0

最終的解決方案將是服務器代碼(asp.net)和客戶端代碼(js)之間的混合。 您可以構建基於文件名或路徑的REST服務,以返回大小。

您可以實現一個js函數,該函數使用REST服務調用的結果更新每個文本的內部文本。

+1

如果他已經在使用ASP.NET,那麼JS是完全沒有必要的。這應該完全在服務器端完成。 – 2011-01-07 15:32:16

2

由於該文件位於服務器上,所以最好使用ASP.NET解決方案。 This blog post顯示如何查找服務器上文件的大小。你可能能夠適應你的需求。

2

javascript並不是真正查詢文件系統的最佳語言。有辦法做到這一點,但他們都非常黑客,你應該遠離他們。

可以動態使用服務器端代碼,雖然得到的文件大小:

long fileSize = (new FileInfo(@ ".\file")).Length; 

所以在您的標記,你可以有這樣的:

<asp:Hyperlink runat="server" ID="hyperlinkFile" ...> 

在後面的代碼,正確設置它:

this.hyperlinkFile.Text = "Click here to download" + fileSize.ToString(); 
0

做這樣的事

<a href="file.xxx">click here to download (<%= C# or VB code for file size %>) </a> 

在<%=%>標籤內,您可以將C#或VB代碼放到文件大小中。服務器將對其進行評估,然後將結果放在該標籤所在的位置。

2

使用XMLHttpRequest向文件發送HEAD並解析返回的HTTP Header,查找Content-Length字段。

喜歡的東西:

var client = new XMLHttpRequest(); 
client.onreadystatechange = function() { 
    if(this.readyState == 2) { 
    alert(client.getResponseHeader("Content-Length")); 
    } 
} 
client.open("HEAD", address); 
client.send(); 

點擊此處瞭解詳情:

http://ajaxpatterns.org/XMLHttpRequest_Call

+0

這是一個有效的解決方案,但他使用的是asp.net ...每次刷新頁面時,是否發現http請求不是大規模的矯枉過正,只是爲了查找文件大小? – 2011-01-07 15:36:44

0

在你的數據庫只要創建一個列名「文件大小」,並用asp.net填充後上傳完成。這確保你不會讓你的服務器過載。

對不起,沒有看到你的文件大小每天都在變化[/編輯] 在這種情況下,你可以寫一個小FileSystem Watcher,讓它運行在你的服務器的後臺,或者你可以通過檢查FileSystem信息,方式更容易。

相關問題