|
|
|
@ -2,15 +2,16 @@ var Upload = { |
|
|
|
xhr : null, |
|
|
|
attached : new Array(), |
|
|
|
get : null, |
|
|
|
name : null, |
|
|
|
file : null, |
|
|
|
|
|
|
|
init : function() { |
|
|
|
document.getElementById('file').addEventListener('change', function(){ |
|
|
|
var file = this.files[0]; |
|
|
|
Upload_ajaxSend({ |
|
|
|
name: file.name, |
|
|
|
size: file.size, |
|
|
|
type: file.type |
|
|
|
}); |
|
|
|
|
|
|
|
Upload.name = file.name; |
|
|
|
|
|
|
|
Upload.preview(file); |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
@ -26,16 +27,80 @@ var Upload = { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
preview : function(file) { |
|
|
|
if (!file.type.match(/image.*/)) { |
|
|
|
console.log("Not a picture !"); |
|
|
|
Upload.initiate(file); |
|
|
|
} else { |
|
|
|
var reader = new FileReader(); |
|
|
|
reader.readAsDataURL(file); |
|
|
|
|
|
|
|
reader.onload = function (ev) { |
|
|
|
Upload.compress(ev.target.result, file); |
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
compress : function(src, file) { |
|
|
|
var image = new Image(); |
|
|
|
image.onload = function() |
|
|
|
{ |
|
|
|
var limit = 1920; |
|
|
|
|
|
|
|
var ratio = Math.min(limit / image.naturalWidth, limit / image.naturalHeight); |
|
|
|
|
|
|
|
var width = image.naturalWidth; |
|
|
|
var height = image.naturalHeight; |
|
|
|
|
|
|
|
if(ratio < 1 || file.size > 320000) { |
|
|
|
if(ratio < 1) { |
|
|
|
width = Math.round(width*ratio); |
|
|
|
height = Math.round(height*ratio); |
|
|
|
} |
|
|
|
|
|
|
|
var canvas = document.createElement('canvas'); |
|
|
|
canvas.width = width; |
|
|
|
canvas.height = height; |
|
|
|
|
|
|
|
canvas.getContext("2d").drawImage(image, 0, 0, width, height); |
|
|
|
|
|
|
|
if(typeof canvas.toBlob == 'function') { |
|
|
|
canvas.toBlob( |
|
|
|
function (blob) { |
|
|
|
Upload.initiate(blob); |
|
|
|
}, |
|
|
|
'image/jpeg', |
|
|
|
0.85 |
|
|
|
); |
|
|
|
} else { |
|
|
|
Upload.initiate(file); |
|
|
|
} |
|
|
|
} else { |
|
|
|
Upload.initiate(file); |
|
|
|
} |
|
|
|
} |
|
|
|
image.src = src; |
|
|
|
}, |
|
|
|
|
|
|
|
initiate : function(file) { |
|
|
|
Upload.file = file; |
|
|
|
|
|
|
|
Upload_ajaxSend({ |
|
|
|
name: Upload.name, |
|
|
|
size: file.size, |
|
|
|
type: file.type |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
request : function(get, put) { |
|
|
|
Upload.get = get; |
|
|
|
|
|
|
|
var file = document.getElementById('file').files[0]; |
|
|
|
|
|
|
|
Upload.xhr = new XMLHttpRequest(); |
|
|
|
|
|
|
|
Upload.xhr.upload.addEventListener('progress', function(evt) { |
|
|
|
var percent = Math.floor(evt.loaded/evt.total*100); |
|
|
|
document.querySelector('#dialog ul li p').innerHTML = percent + '%'; |
|
|
|
var progress = document.querySelector('#dialog ul li p'); |
|
|
|
if(progress) progress.innerHTML = percent + '%'; |
|
|
|
}, false); |
|
|
|
|
|
|
|
Upload.xhr.onreadystatechange = function() { |
|
|
|
@ -44,12 +109,17 @@ var Upload = { |
|
|
|
Dialog.clear(); |
|
|
|
Upload.launchAttached(); |
|
|
|
} |
|
|
|
|
|
|
|
if(Upload.xhr.readyState == 1 |
|
|
|
&& Upload.xhr.status == 0) { |
|
|
|
Upload_ajaxFailed(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Upload.xhr.open("PUT", put, true); |
|
|
|
|
|
|
|
Upload.xhr.setRequestHeader('Content-Type', 'text/plain'); |
|
|
|
Upload.xhr.send(file); |
|
|
|
Upload.xhr.send(Upload.file); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|