2012-11-05 76 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>') 
...