Skip to content

Instantly share code, notes, and snippets.

@KohsukeHada
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KohsukeHada/9974334 to your computer and use it in GitHub Desktop.
Save KohsukeHada/9974334 to your computer and use it in GitHub Desktop.
別サーバのファイルを取得してファイル サイズをリンク横に出力するスクリプト
$("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