我需要解析整个内容并查找链接,如果链接具有pdf,doc,xls,ppt等扩展名,则在链接旁边添加filetype和filesize。
我找到了使用getResponseHeader("Content-Length")
在Stack Overflow中使用jQuery获取文件大小的示例,但是这个文件总是为每个链接返回相同的文件大小。
有人为此提供样品吗?任何帮助都是高度评价的。
我当前的代码(我还没有检查扩展名)
<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 :(得分: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>')
...