2010-05-18 76 views
0

想写一个脚本来检测网页上链接目标的文件大小。使用JavaScript检测链接href的文件大小

现在我有一个函数可以找到PDF文件的所有链接(即href以'.pdf'结尾)并将字符串'[pdf]'附加到innerText。我想扩展它,以便我还可以附加一些文本,建议用户目标是一个大文件(例如大于1MB)。

感谢

回答

4

某些网络服务器可能会给你一个Content-Length标题以响应HEAD请求。您可以使用XmlHttpRequest发送HEAD请求并查看您获得的信息。

这里是我的IIS服务器中的一个说,大约一个PDF文件:

HTTP/1.1 200 OK 
Content-Length: 127791 
Content-Type: application/pdf 
... 

然而,任何不是由Web服务器直接传递(通过PHP或ASP.net送达的文件,例如)获除非脚本专门处理HEAD请求,否则不行。

+0

谢谢,我怀疑这可能是要走的路。这些文件由我控制的IIS服务器托管,但内容存储在Blob中,因此在呈现在浏览器中之前是非结构化的。 – 2010-05-18 20:49:12

0

你不能做到这一点,或至少 - 没有任何实际的,跨浏览器的方式。

如果您事先知道文件大小,例如在生成链接到文件的文档时,可以将大小硬编码到HTML文档中。

<a href="large_file.pdf" onclick="return confirm('Want to download a large file?')">large_file.pdf</a> 
4

你应该能够做到使用XMLHttpRequest来HEAD请求,假设文件是​​相同的域下。然而,这是在服务器端真正应该完成的事情。做额外的请求没有任何好处。

+0

我同意做它服务器端将是理想的,但不幸的是内容被存储为数据库中的斑点。它没有结构,直到浏览器呈现,所以任何服务器端解决方案都会涉及在所有内容上运行正则表达式,即使我只关心少数几个链接。 – 2010-05-18 20:52:34