Created
September 8, 2015 14:53
-
-
Save jz5/0a23407ffa212c937204 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
(function ($) { | |
$("#target").on("drop", function (evt) { | |
// ファイルをドロップした場合 | |
extractMedia(evt.originalEvent.dataTransfer.files); | |
return false; | |
}).on("dragenter", function () { | |
return false; | |
}).on("dragover", function () { | |
return false; | |
}).click(function () { | |
// 画面をクリックした場合、ファイル選択のダイアログを開く | |
$("#file").click(); | |
return false; | |
}); | |
// ダイアログからファイルを選択した場合 | |
$("#file").on("change", function (evt) { | |
extractMedia(evt.target.files); | |
}); | |
// zip ファイル(Office 文書)から、メディアフォルダーのみ残す | |
function extractMedia(files) { | |
for (var i = 0, f; f = files[i]; i++) { | |
var reader = new FileReader(); | |
reader.onload = (function (theFile) { | |
return function (e) { | |
try { | |
var count = 0; | |
var zip = new JSZip(e.target.result); | |
// zip の内容を走査 | |
$.each(zip.files, function (index, zipEntry) { | |
if (zipEntry.name.lastIndexOf('word/media/', 0) !== 0 && | |
zipEntry.name.lastIndexOf('ppt/media/', 0) !== 0 && | |
zipEntry.name.lastIndexOf('xl/media/', 0) !== 0) { | |
zip.remove(zipEntry.name); | |
} else { | |
count++; | |
} | |
}); | |
if (count > 0) { | |
// メディアフォルダーがあった場合のみ、保存 | |
var blob = zip.generate({ type: "blob" }); | |
saveAs(blob, "media.zip"); | |
} else { | |
alert("メディアファイルは見つかりませんでした。"); | |
} | |
} catch (e) { | |
alert("Error reading " + theFile.name + " : " + e.message); | |
} | |
} | |
})(f); | |
reader.readAsArrayBuffer(f); | |
} | |
} | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment