Last active
August 29, 2015 13:58
-
-
Save KohsukeHada/9974334 to your computer and use it in GitHub Desktop.
別サーバのファイルを取得してファイル サイズをリンク横に出力するスクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$("document").ready(function() { | |
//別サーバのファイルを取得してファイル サイズをリンク横に出力するスクリプト | |
//IMG タグの場合と class="noFileInfo" 指定の場合は除外 | |
$("a[href]").not(":has('img')").not(".noFileInfo").each(function() { | |
var obj = $(this); | |
var href = obj.attr('href'); | |
//サイズを取得するファイル拡張子の絞り込み | |
if (href.match(/\.(TXT|CSV|PDF|MP3|ISO|ZIP|7Z|LZH|RAR|EXE|DMG|SIT|TAR|GZ|DOC|DOCX|XLS|XLSX|PPT|PPTX|MOV|AVI|MP4|WMV|MSI|MSP|SWF)$/i)) { | |
e_uri = encodeURIComponent( href ); | |
//JSP を使用する場合 | |
request_url = "//<ファイルが設置されているサーバ>/cgi-bin/getFileSize.jsp?url=" + e_uri + "&callback=?"; | |
//PHP を使用する場合 | |
request_url = "//<ファイルが設置されているサーバ>/cgi-bin/getFileSize.php?url=" + e_uri + "&callback=?"; | |
$.getJSON(request_url, jsonpCallback); | |
} | |
//コールバック関数 | |
function jsonpCallback(json) { | |
var iHrefLength = href.length; | |
var iDot = href.lastIndexOf("."); | |
var sExtension = href.substring(iDot+1,iHrefLength); | |
sExtension = sExtension.toUpperCase(); | |
var regExp = /PDF([?#&][\w]+[=]\d)+$/; | |
if(regExp.test(sExtension)) { | |
sExtension = ''; | |
} | |
if ( json.size > 0) { | |
obj.after(' <span class="fileInfo">['+ sExtension + ' ' + conv_unit(json.size)+']</span>'); | |
} | |
else{ | |
obj.after(' <span class="fileInfo">['+ sExtension+']</span>'); | |
} | |
} | |
}); | |
}); | |
//ファイル サイズを変換する関数群 | |
var number_format = function(val) { | |
var s = '' + val; | |
if (s.length > 3) { | |
var r = ((r = s.length % 3) == 0 ? 3 : r); | |
var d = s.substring(r); | |
s = s.substr(0, r) + d.replace(/(\d{3})/g, ",$1"); | |
} | |
return s; | |
}; | |
var conv_unit = function(size) { | |
var unit = ['KB','MB','GB','TB','PB','EB','ZB','YB']; | |
if (size < 1024) return size + 'B'; | |
for (var i = 0; i < unit.length; i++) { | |
size /= 1024; | |
if (size < 1024) { | |
if (size >= 100) | |
return number_format(Math.round(size)) + unit[i]; | |
else | |
return Math.round(size*10)/10 + unit[i]; | |
} | |
} | |
return number_format(Math.round(size)) + 'YB'; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment