This commit is contained in:
2024-10-29 14:04:59 +08:00
commit 48bf3e6f33
2839 changed files with 762707 additions and 0 deletions

View File

@@ -0,0 +1,141 @@
+function(){
class img_compress_upload {
constructor (data){
let this_default ={
max_height: 1024,
max_width: 1024,
max_num: 1,
list_box:'',
add_btn:'',
accept:'',// 可设置的文件的上传类型
del_btn_class: 'del',
submit_btn:'',
submit_form:'',
},
self = this;
this._data = $.extend(this_default, data);
this._max_height = this._data.max_height;
this._max_width = this._data.max_width;
this._add_btn = this._data.add_btn;
this._list_box = this._data.list_box;
this._del_btn_class = this._data.del_btn_class;
this._submit_btn = this._data.submit_btn;
this._submit_form = this._data.submit_form;
this._index = -1;
this._accept = this._data.accept;
this._add_event();
}
_add_event(){
let self = this;
$('body').append("<input type='file' id='add_file' style='display:none;' accept='.jpg,.jpeg,.png,.gif,.webp,.tiff,.bmp ,.mp4,.wmv ,.m4v,.flv,.3gp'>");
this._add_file = $('#add_file');
this._add_file.on('change',function (){//监听图片选择
if($(this).val()){//存在图片
self._storage();
}
});
this._add_btn.on('click',function(){
self._index = -1;
self._add_file.click();
});
this._list_box.on('click', 'li:not(".add_btn")', function(event){
self._index = $(this).index();
self._add_file.click();
});
this._list_box.on('click', '.'+this._del_btn_class, function(event){
$(this).parents('li').remove();
event.stopPropagation();
});
}
_storage (){
let self = this,
reader = new FileReader(),
file=this._add_file[0].files[0];
var straccpet = '.jpg,.jpeg,.png,.gif,.webp,.tiff,.bmp ,.mp4,.wmv ,.m4v,.flv,.3gp'
var index = file.name.lastIndexOf('.')
// 获取后缀
var ext = file.name.substr(index + 1)
// 输出结果
if (straccpet.indexOf(ext) === -1) {
alert('文件上传的格式不对,请重新上传')
return false
}
// 限制文件大小上传
if ((file.size / 1024 / 1024) > 10) {
alert('文件上传大小不能大于10M')
return false
}
// if(!/image\/\w+/.test(file.type)){
// alert("请上传图片格式文件");
// return false;
// }
reader.readAsDataURL(file);
reader.onload = function(e){
if(reader.result){
if('.mp4,.wmv ,.m4v,.flv,.3gp'.indexOf(ext) !== -1){
self._modify_img_and_show(reader.result,file.name,'vido');
} else {
self._compress(reader.result);//压缩图片
}
}
}
}
_modify_img_and_show (img_data,filename,type){
this._add_file.val('');
if(this._index > -1){//修改
let this_box = this._list_box.find('li').eq(this._index);
if(type){
this_box.html('<span>' + filename +'</span> <i class="del">x</i><input name="img[]" type="hidden" value="' + img_data + '">')
} else {
this_box.html('<img src="' + img_data + '"> <i class="del">x</i><input name="img[]" type="hidden" value="' + img_data + '">')
}
// this_box.find('img').attr('src', img_data);
// this_box.find('input').val(img_data);
}else{
let this_html = ''
if(!type){
this_html = '<li><img src="' + img_data + '"> <i class="del">x</i><input name="img[]" type="hidden" value="' + img_data + '"></li>';
} else {
// 如果是视频类型
this_html = '<li style="width: 140px;word-wrap:break-word; height: 140px;border: 1px solid #e5e5e5; display: flex; align-items: center;overflow: hidden;justify-content: center;padding: 0;"><span>' + filename +'</span> <i class="del">x</i><input name="img[]" type="hidden" value="' + img_data + '"></li>';
}
console.log('bb')
this._add_btn.before(this_html);
}
}
_compress (img_data){
var self = this;
if(!img_data)return;
var canvas = document.createElement('canvas'),
img = new Image(),
max_height = this._max_height,
max_width = this._max_width;
img.onload = function(){
if(img.height > max_height) {
img.width = img.width * (max_height / img.height);
img.height = max_height;
}
if(img.width > max_width){
img.height = img.height *(max_width / img.width);
img.width = max_width;
}
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
canvas.width = img.width; canvas.height = img.height;
ctx.fillStyle="rgba(255,255,255,1)";
ctx.fillRect(0,0, img.width, img.height);
ctx.drawImage(img, 0, 0, img.width, img.height);
self._modify_img_and_show(canvas.toDataURL("image/jpeg"));
};
img.src = img_data;//先绑定onload再设置链接
}
}
window.img_compress_upload = img_compress_upload;
}()