123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- var ZXXFILE = {
- fileInput: null,
- dragDrop: null,
- upButton: null,
- url: "",
- fileFilter: [],
- filter: function(files) {
- return files;
- },
- onSelect: function() {},
- onDelete: function() {},
- onDragOver: function() {},
- onDragLeave: function() {},
- onProgress: function() {},
- onSuccess: function() {},
- onFailure: function() {},
- onComplete: function() {},
-
-
-
-
- funDragHover: function(e) {
- e.stopPropagation();
- e.preventDefault();
- this[e.type === "dragover"? "onDragOver": "onDragLeave"].call(e.target);
- return this;
- },
-
- funGetFiles: function(e) {
-
- this.funDragHover(e);
-
-
- var files = e.target.files || e.dataTransfer.files;
-
- this.fileFilter = this.fileFilter.concat(this.filter(files));
- this.funDealFiles();
- return this;
- },
-
-
- funDealFiles: function() {
- for (var i = 0, file; file = this.fileFilter[i]; i++) {
-
- file.index = i;
- }
-
- this.onSelect(this.fileFilter);
- return this;
- },
-
-
- funDeleteFile: function(fileDelete) {
- var arrFile = [];
- for (var i = 0, file; file = this.fileFilter[i]; i++) {
- if (file != fileDelete) {
- arrFile.push(file);
- } else {
- this.onDelete(fileDelete);
- }
- }
- this.fileFilter = arrFile;
- return this;
- },
-
-
- funUploadFile: function() {
- var self = this;
- if (location.host.indexOf("sitepointstatic") >= 0) {
-
- return;
- }
- file = this.fileFilter[this.fileFilter.length-1]
- console.log(file);
- var xhr = new XMLHttpRequest();
- if (xhr.upload) {
-
- xhr.upload.addEventListener("progress", function(e) {
- self.onProgress(file, e.loaded, e.total);
- }, false);
-
-
- xhr.onreadystatechange = function(e) {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- self.onSuccess(file, xhr.responseText);
- self.funDeleteFile(file);
- if (!self.fileFilter.length) {
-
- self.onComplete();
- }
- } else {
- self.onFailure(file, xhr.responseText);
- }
- }
- };
-
-
- xhr.open("POST", self.url, true);
- xhr.setRequestHeader("X_FILENAME", encodeURI(file.name));
- console.log(file)
- xhr.send(file);
- }
-
- },
-
- init: function() {
- var self = this;
-
- if (this.dragDrop) {
- this.dragDrop.addEventListener("dragover", function(e) { self.funDragHover(e); }, false);
- this.dragDrop.addEventListener("dragleave", function(e) { self.funDragHover(e); }, false);
- this.dragDrop.addEventListener("drop", function(e) { self.funGetFiles(e); }, false);
- }
-
-
- if (this.fileInput) {
- this.fileInput.addEventListener("change", function(e) { self.funGetFiles(e); }, false);
- }
-
-
- if (this.upButton) {
- this.upButton.addEventListener("click", function(e) { self.funUploadFile(e); }, false);
- }
- }
- };
|