1

我需要解析整个内容并查找链接,如果链接具有 pdf、doc、xls、ppt 等扩展名,则在链接旁边添加文件类型和文件大小。

我在 Stack Overflow 中找到了一个使用 jQuery 获取文件大小的示例,getResponseHeader("Content-Length")但这个示例始终为每个链接返回相同的文件大小。有人有这个样品吗?任何帮助都是高度适用的。

我当前的代码(我还没有检查扩展)

<script type="text/javascript">
    $(document).ready(
        function () {
            $('a').each(function (index, obj) {                    
                var eleHref = $(obj).attr('href');
                var extension = eleHref.substr((eleHref.lastIndexOf('.') + 1)).toUpperCase();
                var request;
                request = $.ajax({ type: "HEAD", url: $(eleHref).val(), success:
                function () {
                    $(obj).append(" (" + extension + ", " + parseFloat(request.getResponseHeader("Content-Length") / 1024).toFixed(2) + 'KB)');
                }
                });
            })             
        });            
</script>
4

1 回答 1

2

假设您的图像/文档位于同一域中,这应该可以。

$('a').each(function() {

  var $this = $(this)
    , href = $this.attr('href')
    , ext = /(jpg|png|gif|doc|ppt|xls)$/i.exec( href )
    , req;

  if ( ext.length ) {
    req = $.ajax({
      type: 'HEAD',
      url: href,
      success: function() {
        var size = +req.getResponseHeader('Content-Length') / 1024 + 'KB';
        $this.append('<span>Extension: '+ ext +'</span>')
             .append('<span>Size: '+ size +'</span>');
      }
    });
  }

});

编辑:如果需要,可以将扩展映射到对象以获取更多信息:

var extensions = {
  ppt: 'Microsoft PowerPoint',
  doc: 'Microsoft Word',
  pdf: 'Adobe Portable Document Format',
  ...
};

进而:

...
$this.append('<span>Extension: '+ extensions[ ext ] +'</span>')
...
于 2012-11-06T00:15:50.853 回答