2012-11-05 53 views
1

我需要解析整个内容并查找链接,并且链接是否具有类似pdf,doc,xls,ppt的扩展名,然后在链接旁边添加文件类型和文件大小。解析内容中的所有链接

我发现了一个使用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> 
+0

您可以发布您的代码? –

+0

添加了我的代码。谢谢 – Tippu

回答

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>') 
...