You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pgfqe6ch8/public/javascripts/jq-upload/upload.js

62 lines
1.9 KiB

6 years ago
$(function() {
var $upload_file = $('.upload_file');
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
var validateImage = function(file) {
var types = $upload_file.attr('data-file-type').split(",");
var check = false;
$.each(types, function(n, e) {
if (endsWith(file.name, e)) {
check = true;
}
});
if (!check) {
alert($upload_file.attr("data-type-support-message") + $upload_file.attr("data-file-type"));
return false;
}
if (file.size && file.size > parseInt($upload_file.attr('data-max-file-size'))) {
alert($upload_file.attr("data-max-file-size-message"));
return false;
}
return true;
};
$('.upload_file').fileupload({
url: '/upload_avatar.json?source_type=' + $('.upload_file').attr('data-source-type') +
'&source_id=' + $('.upload_file').attr('data-source-id'),
add: function(e, data) {
if (!validateImage(data.files[0])) {
return false;
}
data.submit();
},
formData: function(form) {
var data = form.serializeArray();
var auth = null;
for (var key in data) {
if (data[key].name == "authenticity_token") {
auth = data[key];
break;
}
}
return [auth];
},
done: function(e, data) {
var imgSpan = jQuery('#avatar_image');
var result = data.result.text ? data.result.text() : data.result;
if(result){
var o = JSON.parse(result);
if(o.status == 0){
imgSpan.attr({
"src": o.url
});
} else {
alert(o.message);
}
}
}
});
});