/
loadimg.js
122 lines (108 loc) · 4.06 KB
/
loadimg.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* loadImg
*
* Copyright 2016, Marwen Hlaoui - http://http:marwenhlaoui.me
*
* Released under the MIT license - http://opensource.org/licenses/MIT
*/
;(function($){
$.fn.loadImg = function(options){
// set a reference to our element
var def = {
"fileExt" : ['jpg'],
"fileSize" : [0,2]
};
var el = $(this).selector;
var loader = $(el).append('<div class="loader"></div>');
var img = $(el).append('<img>');
var text = (typeof options.text === 'undefined') ? 'Upload' : options.text;
var init = function(){
if ($(el).attr('exist-img')) {
_exist($(el).attr('exist-img'));
}else{
_ready();
}
}
var loadUrl = function(input){
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
setTimeout(showImg(e.target.result) , parseInt(Math.random() * 800 + 800));
}
reader.readAsDataURL(input.files[0]);
}
}
var showImg = function(url){
$(el).find('img').show();
$(el).removeClass('_cssimg');
$(el).addClass("_imgshow");
$(el).find('img').attr('src', url);
$(el).find('.loader').hide('slow');
}
var verifExt = function(input){
if (input.files && input.files[0]) {
var f = input.files[0];
var validExtensions = ['jpg','gif','png']; //array of valid extensions
if (options.fileExt) {
listExtensions = options.fileExt;
}else{
listExtensions = def.fileExt;
}
var fileName = f.name;
var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);
if (($.inArray(fileNameExt, validExtensions) == -1)||($.inArray(fileNameExt, listExtensions) == -1)){
return _error("Invalid file type");
}
}
}
var verifSize = function(input){
if (input.files && input.files[0]) {
var f = input.files[0];
var file_size = parseInt(0);
var min = def.fileSize[0];
var max = def.fileSize[1];
var convert = parseInt(1053633);
//convert mo -> oct
//mo * 1053633
if (options.fileSize_min) {min = options.fileSize_min}
if (options.fileSize_max) {max = options.fileSize_max}
if (f.size) {file_size = f.size}
if ((f.size < parseInt(min * convert))||(f.size > parseInt(max * convert))) {
return _error("Invalid file size");
}
}
}
var _error = function(error_type){
$(el).find('img').hide();
$(el).find('.loader').hide('slow');
$(el).removeClass("_imgshow");
$(el).addClass("_cssimg");
/*Invalid file type*/
return false;
}
var _ready = function(){
$(el).addClass("_cssimg");
$(el).attr("text-file",text);
/* load photo */
$(el).find('input[type=file]').on('change',function(){
$(el).find('.loader').show();
if((verifExt(this) != false)&&(verifSize(this) != false)){
loadUrl(this);
}
});
}
var _exist = function(url){
showImg(url);
$(el).attr("text-file",text);
/* load photo */
$(el).find('input[type=file]').on('change',function(){
$(el).removeAttr('exist-img');
$(el).find('.loader').show();
if((verifExt(this) != false)&&(verifSize(this) != false)){
loadUrl(this);
}
});
}
init();
}
})(jQuery);