2011-01-07 52 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信息,方式更容易。