- 1GB 단위로 분할 압축
- 스크립트 F12 후 붙여넣기 (MAIL_HOST에 메일 사이트 주소 입력 ~~.kr)
- 파입업로드에 모든 파일 선택
- 업로드 시작
// ############################################################# SETTINGS ############################################################# //
const ACTION_DELAY = 10*1000;
const CHECK_DELAY = 30*1000;
const MAIL_TITLE = "file";
const MAIL_HOST = "???";
// ############################################################# ACTION ############################################################# //
function triggerFileDrop(file) {
const iframeSenderDocument = document.querySelector("#mail-sender").contentWindow.document;
// Create a DataTransfer object to hold the file
const dataTransfer = new DataTransfer();
// Add the single file to the DataTransfer object
dataTransfer.items.add(file);
// Create a dragenter event to simulate the start of the drag-and-drop operation
const dragEnterEvent = new DragEvent('dragenter', {
bubbles: true,
cancelable: true,
dataTransfer: dataTransfer
});
// Create a drop event
const dropEvent = new DragEvent('drop', {
bubbles: true,
cancelable: true,
dataTransfer: dataTransfer
});
// Dispatch dragenter and drop events
const dropZone = iframeSenderDocument.querySelector(".attachments-dropzone");
dropZone.dispatchEvent(dragEnterEvent);
dropZone.dispatchEvent(dropEvent);
// Set the title
iframeSenderDocument.querySelector(".intxtD").value = MAIL_TITLE;
// Click the send button
iframeSenderDocument.querySelector(".buttonSet > a").click();
}
function isSendingComplete() {
const iframeCheckerDocument = document.querySelector("#mail-checker").contentWindow.document;
if (!iframeCheckerDocument.querySelector('.progress')) return false;
return iframeCheckerDocument.querySelector('.progress').textContent.includes('처리완료');
}
// Function to perform the delete action
function performDeleteAction() {
const iframeCheckerDocument = document.querySelector("#mail-checker").contentWindow.document;
document.querySelector("#mail-checker").contentWindow.confirm = function () { return true; }
let deleteTarget = iframeCheckerDocument.form_data_list.DATA_IDX[0];
if (!deleteTarget) {
deleteTarget = iframeCheckerDocument.form_data_list.DATA_IDX;
}
// sanity check for the title
if (iframeCheckerDocument.querySelector(".b > td:nth-child(3) > span > a").title != MAIL_TITLE) {
return;
}
deleteTarget.click();
// Delete
const deleteButton = iframeCheckerDocument.querySelector('a > img[src="images/kor/btn/btn_delete.gif"]').closest('a');
deleteButton.click();
}
function setupPagesInIframes() {
var a = document.querySelector("#mail-sender");
var b = document.querySelector("#mail-checker");
if (a) a.remove();
if (b) b.remove();
const iframeSender = document.createElement("iframe");
iframeSender.id = "mail-sender";
iframeSender.src = MAIL_HOST + "/data.Data.do?cmd=showDataWritePage&gubun=5";
iframeSender.height = "500";
iframeSender.width = "100%";
document.body.appendChild(iframeSender);
const iframeChecker = document.createElement("iframe");
iframeChecker.id = "mail-checker";
iframeChecker.src = MAIL_HOST + "/data.Data.do?cmd=showDataListPage&M_FLAG=I&DATA_FLAG=S&gubun=5";
iframeChecker.height = "500";
iframeChecker.width = "100%";
document.body.appendChild(iframeChecker);
}
function uploadFiles(files, i, isSending) {
if (i == files.length) {
console.log("End of the process.");
return;
}
if (!isSending) {
console.log("Start to send the file:", files[i].name);
setTimeout(function () {
setupPagesInIframes();
setTimeout(function () {
triggerFileDrop(files[i]);
uploadFiles(files, i, true);
}, ACTION_DELAY);
}, ACTION_DELAY);
} else {
console.log("Sending", files[i].name, " in progress ...");
document.querySelector("#mail-checker").contentWindow.location.reload();
setTimeout(function() {
document.querySelector("#mail-checker").contentWindow.document.querySelector(".data_se > a").click();
setTimeout(function() {
setTimeout(function () {
if (isSendingComplete()) {
console.log("Complete.");
performDeleteAction();
setTimeout(function () {
uploadFiles(files, i+1, false); // send the next file
}, ACTION_DELAY); // TODO: check empty
} else {
uploadFiles(files, i, true);
}
}, ACTION_DELAY);
}, ACTION_DELAY);
}, CHECK_DELAY);
}
}
function startUpload() {
let files = document.getElementById('fileInput').files
uploadFiles(files, 0, false);
}
// ############################################################# SETUP ############################################################# //
// Empty the whole page
document.body.innerHTML = ""
// Create a file select and upload button
const startButton = document.createElement("div");
startButton.innerHTML = "<input type=\"file\" id=\"fileInput\" multiple=\"\"> <button type=\"button\" onclick=\"startUpload();\">업로드 시작</button>";
startButton.type = "button";
document.body.appendChild(startButton);
// Setup the mail sender and checker pages
setupPagesInIframes();