Я знаю, что уже поздно.Но мой комментарий может помочь другим.
Несколько дней назад даже у меня была такая же ситуация.У меня был объект javascript, который был огромен.Я искал решение.Затем я посмотрел здесь .
Я создал универсальную функцию для загрузки файла, который может быть буфером, данными base64 или JSON.
let data = {
version: "2.3.4",
objects: [{
a: "imagas dae",
verasdasdsion: "2.3.4",
originX: "center",
originY: "center"
}],
background: "#232326",
canvasWidth: 619,
canvasHeight: 413
}
uploadFile(JSON.stringify(data), 'test.json').then(r=>{}).catch(e=>{})
function uploadFile(file, file_name, path = '/defualt') {
return new Promise((resolve, reject) => {
if (Buffer.isBuffer(file) || (file && Buffer.isBuffer(file.buffer)) || String(file_name).includes('.json') || file.indexOf('data:') === 0) {
file = Buffer.isBuffer(file) ? file : String(file_name).includes('.json') ? file : file.indexOf('data:') === 0 ? new Buffer(img_src.replace(/^data:\w+\/\w+;base64,/, ""), 'base64') : file.buffer;
var data = {
Key: file_name,
Body: file,
Bucket: "path/to/your/bucket" + path,
CacheControl: 'no-cache'
};
if (file.indexOf('data:') === 0) {
data['ContentType'] = String(file).substr(file.indexOf('data:') + 'data:'.length, file.indexOf(';'))
} else if (String(file_name).includes('.json')) {
data['ContentType'] = 'application/pdf';
}
s3.putObject(data, function (err, data) {
if (err) {
console.log('Error uploading data: ', err);
return reject(err);
} else {
return resolve({
name: file_name,
path: path
});
}
});
} else {
return reject('File is required');
}
});
}