You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.6 KiB
JavaScript
129 lines
4.6 KiB
JavaScript
function WmUploader(options) {
|
|
this.randomNum = function(min, max){
|
|
var range = max - min;
|
|
var rand = Math.random();
|
|
var num = min + Math.round(rand * range);
|
|
return num;
|
|
}
|
|
|
|
this.accept = options.accept == undefined ? {
|
|
title: '图片',
|
|
extensions: 'png,gif,jpg,jpeg,bmp',
|
|
mimeTypes: 'image/*',
|
|
} : options.accept
|
|
|
|
// fileType: img file
|
|
this.fileType = options.fileType == undefined ? 'img' : options.fileType
|
|
this.uploadKey = options.uniqueCode == undefined ? this.randomNum(10000, 99999) : options.uniqueCode
|
|
this.uploadSelector = options.selector
|
|
this.uploadUrl = options.url
|
|
this.uploadWrapper = $(this.uploadSelector).parents('.upload-wrapper').eq(0);
|
|
this.uploadList = this.uploadWrapper.find('.uploader-list');
|
|
this.afterSuccess = options.afterSuccess
|
|
this.afterDelete = options.afterDelete
|
|
|
|
var that = this
|
|
|
|
this.getFileId = function(file) {
|
|
return file.id + '-' + that.uploadKey
|
|
}
|
|
|
|
this.getFileTag = function(file) {
|
|
return $('#' + that.getFileId(file))
|
|
}
|
|
|
|
this.uploader = WebUploader.create({
|
|
auto: true,
|
|
swf: '/Public/static/webuploader/Uploader.swf',
|
|
server: that.uploadUrl,
|
|
pick: {
|
|
id: that.uploadSelector,
|
|
multiple: false
|
|
},
|
|
accept: that.accept,
|
|
resize: false,
|
|
disableGlobalDnd: true,
|
|
fileNumLimit: 1,
|
|
threads: 5,
|
|
thumb: true,
|
|
compress: false,
|
|
prepareNextFile: true,
|
|
formData: function(){ return $.extend(true, {}, {}); },
|
|
chunked: false,
|
|
duplicate: true
|
|
});
|
|
|
|
this.uploader.on('fileQueued', function(file) {
|
|
if (that.fileType == 'img') {
|
|
var html = '';
|
|
html += '<div id="' + that.getFileId(file) + '" class="item" style="margin-right: 10px;">';
|
|
html += '<a href="javascript:;"><img src="" style="width: 100px;height: 100px;cursor: move;"></a>';
|
|
html += '<h4 class="info">' + file.name + '</h4>';
|
|
html += '<p class="state">等待上传...</p>';
|
|
html += '</div>';
|
|
|
|
that.uploadList.append(html);
|
|
that.uploadList.css('margin-top','10px');
|
|
|
|
var imgNode = that.uploadList.children(that.getFileTag(file)).find('img');
|
|
that.uploader.makeThumb(file, function (error, src) {
|
|
if (error) {
|
|
return;
|
|
}
|
|
imgNode.attr('src', src);
|
|
}, 300, 300);
|
|
} else {
|
|
that.uploadList.append(
|
|
'<div id="' + that.getFileId(file) + '" class="item">' +
|
|
'<h4 class="info">' + file.name + '</h4>' +
|
|
'<p class="state">等待上传...</p>' +
|
|
'</div>'
|
|
);
|
|
}
|
|
});
|
|
|
|
this.uploader.on('uploadProgress', function(file, percentage) {
|
|
var $li = that.getFileTag(file),
|
|
$percent = $li.find('.progress .progress-bar');
|
|
// 避免重复创建
|
|
if ( !$percent.length ) {
|
|
$percent = $('<div class="progress progress-striped active">' +
|
|
'<div class="progress-bar" role="progressbar" style="width: 0%">' +
|
|
'</div>' +
|
|
'</div>').appendTo( $li ).find('.progress-bar');
|
|
}
|
|
$li.find('p.state').text('上传中');
|
|
$percent.css('width', percentage * 100 + '%');
|
|
$percent.text((percentage * 100).toFixed(0) + '%');
|
|
});
|
|
|
|
this.uploader.on('uploadSuccess', function(file, response) {
|
|
var fileTag = that.getFileTag(file)
|
|
fileTag.find('p.state').text('已上传').fadeOut(800);
|
|
fileTag.find('h4.info').append('<a href="javascript:;" class="file-delete table_click" style="float:none;display:inline-block;margin-left:10px;">删除</a>');
|
|
fileTag.find('.file-delete').on('click', function() {
|
|
$('#file_url').val('');
|
|
that.uploader.removeFile(file.id);
|
|
fileTag.remove();
|
|
if (that.afterDelete != undefined) {
|
|
that.afterDelete(file)
|
|
}
|
|
return false;
|
|
});
|
|
if(!response.chunk) {
|
|
var url = response.path + '/' + response.name;
|
|
$('#file_url').val(url);
|
|
}
|
|
if (that.afterSuccess != undefined) {
|
|
that.afterSuccess(file, response)
|
|
}
|
|
});
|
|
|
|
this.uploader.on('uploadError', function(file) {
|
|
that.getFileTag(file).find('p.state').text('上传出错');
|
|
});
|
|
|
|
this.uploader.on('uploadComplete', function(file) {
|
|
that.getFileTag(file).find('.progress').fadeOut();
|
|
});
|
|
} |