mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-11 08:25:46 +01:00
closes #6722
calculate size of base64 image from buffer, still not perfect but better than string.length
This commit is contained in:
@@ -163,7 +163,10 @@ define('pictureCropper', ['translator', 'cropper', 'benchpress'], function (tran
|
|||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
var imageUrl;
|
var imageUrl;
|
||||||
var imageType = file.type;
|
var imageType = file.type;
|
||||||
|
var fileSize = data.hasOwnProperty('fileSize') && data.fileSize !== undefined ? parseInt(data.fileSize, 10) : false;
|
||||||
|
if (file.size > fileSize * 1024) {
|
||||||
|
return app.alertError('[[error:file-too-big, ' + fileSize + ']]');
|
||||||
|
}
|
||||||
reader.addEventListener('load', function () {
|
reader.addEventListener('load', function () {
|
||||||
imageUrl = reader.result;
|
imageUrl = reader.result;
|
||||||
|
|
||||||
|
|||||||
@@ -125,3 +125,7 @@ image.writeImageDataToTempFile = function (imageData, callback) {
|
|||||||
callback(err, filepath);
|
callback(err, filepath);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
image.sizeFromBase64 = function (imageData) {
|
||||||
|
return Buffer.from(imageData.slice(imageData.indexOf('base64') + 7), 'base64').length;
|
||||||
|
};
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ module.exports = function (User) {
|
|||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
var size = data.file ? data.file.size : data.imageData.length;
|
var size = data.file ? data.file.size : image.sizeFromBase64(data.imageData);
|
||||||
meta.config.maximumCoverImageSize = meta.config.maximumCoverImageSize || 2048;
|
meta.config.maximumCoverImageSize = meta.config.maximumCoverImageSize || 2048;
|
||||||
if (size > parseInt(meta.config.maximumCoverImageSize, 10) * 1024) {
|
if (size > parseInt(meta.config.maximumCoverImageSize, 10) * 1024) {
|
||||||
return next(new Error('[[error:file-too-big, ' + meta.config.maximumCoverImageSize + ']]'));
|
return next(new Error('[[error:file-too-big, ' + meta.config.maximumCoverImageSize + ']]'));
|
||||||
@@ -89,10 +89,10 @@ module.exports = function (User) {
|
|||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var size = data.file ? data.file.size : data.imageData.length;
|
var size = data.file ? data.file.size : image.sizeFromBase64(data.imageData);
|
||||||
var uploadSize = parseInt(meta.config.maximumProfileImageSize, 10) || 256;
|
var uploadSize = parseInt(meta.config.maximumProfileImageSize, 10) || 256;
|
||||||
if (size > uploadSize * 1024) {
|
if (size > uploadSize * 1024) {
|
||||||
return callback(new Error('[[error:file-too-big, ' + meta.config.maximumProfileImageSize + ']]'));
|
return callback(new Error('[[error:file-too-big, ' + uploadSize + ']]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var type = data.file ? data.file.type : image.mimeFromBase64(data.imageData);
|
var type = data.file ? data.file.type : image.mimeFromBase64(data.imageData);
|
||||||
|
|||||||
Reference in New Issue
Block a user