<script type="text/javascript">
var imageModule = (function () {
"use strict";
var possible = window.File && window.FileReader && window.FormData;
var apiPath = "/api/test.php";
var folder = "/upload/review/";
var $input;
var maxWidth = 600;
var maxHeight = 480;
var imageArray = [];
var callback;
function sendImageFile(imageData) {
if (imageData) {
var formData = new FormData();
formData.append("type", "upload");
formData.append("folder", folder);
formData.append("imageData", imageData);
$.ajax({
type: "post",
url: apiPath,
data: formData,
dataType: "json",
contentType: false,
processData: false,
})
.then(function (data) {
if (data.data) {
imageArray.push(data.data.file);
$input.val("");
if (callback) {
callback(imageArray);
} else {
console.log("callback function not initialized");
}
}
})
.catch(function (error) {
console.log("upload fail: ", error);
});
} else {
console.log("image data is null");
}
}
return {
init: function (fileId, callbackFunc, settings) {
if (possible) {
if (typeof settings === "object") {
if (settings.width) {
maxWidth = settings.width;
}
if (settings.height) {
maxHeight = settings.height;
}
if (settings.folder) {
folder = settings.folder;
}
}
if ($.isFunction(callbackFunc)) {
callback = callbackFunc;
} else {
console.log("callback is not defined");
}
var options = {
maxWidth: maxWidth,
maxHeight: maxHeight,
canvas: true,
downsamplingRatio: 0.5,
};
$input = $("#" + fileId);
$input.on("change", function (e) {
e.preventDefault();
e = e.originalEvent;
var target = e.dataTransfer || e.target;
var file = target && target.files && target.files[0];
loadImage.parseMetaData(file, function (data) {
if (data.exif) {
options.orientation = data.exif.get("Orientation");
} else {
if (options.orientation) {
options.orientation = null;
}
}
loadImage(
file,
function (img) {
sendImageFile(img.toDataURL());
},
options,
);
});
});
} else {
console.log("file upload is not supported");
}
},
getFolder: function () {
return folder;
},
delete: function (idx, callbackFunc) {
if (imageArray[idx]) {
$.ajax({
url: apiPath,
type: "post",
data: {
type: "delete",
folder: folder,
filename: imageArray[idx],
},
dataType: "json",
})
.then(function (data) {
console.log("file delete success");
console.log(data);
if ($.isFunction(callbackFunc)) {
callbackFunc(data);
}
})
.catch(function (error) {
console.log("server file delete failed");
console.log(error);
})
.done(function () {
imageArray.splice(idx, 1);
$input.val("");
if (callback) {
callback(imageArray);
} else {
console.log("callback function not initialized");
}
});
} else {
console.log("delete index not defined");
}
},
clear: function () {
console.log("clear array");
imageArray = [];
},
};
})();
$(function () {
imageModule.init(
"fileInput",
function (data) {
var folder = imageModule.getFolder();
var str = "";
for (var i = 0, len = data.length; i < len; i++) {
str +=
'<img src="' +
folder +
data[i] +
'" style="width:100%;height:100%;">';
}
$("#area").html(str);
$("#fileData").val(JSON.stringify(data));
},
{},
);
});
$("#area").empty();
$("#fileData").val("");
imageModule.clear();
</script>
<input type="file" name="imageFile" id="fileInput" />