xerrus / lib /r2.js
mydapitt
first
b688d12
Raw
History Blame Contribute Delete
1.72 kB
const AWS = require('aws-sdk');
const fs = require('fs');
const { fromBuffer } = require('file-type'); // Perbaikan di sini
const path = require('path');
const crypto = require('crypto');
// Konfigurasi AWS SDK untuk Cloudflare R2
const r2 = new AWS.S3({
endpoint: 'https://90ea285cb6b03a79a36923f11a34c3a2.r2.cloudflarestorage.com',
accessKeyId: '769433fbf8d0d975144746b83eb2619e',
secretAccessKey: '1679293fecd820a92788bbc6825ff948117284e0a5bcdea025903f06bfc57716',
region: 'auto',
signatureVersion: 'v4',
});
// Nama bucket dan file yang ingin diupload
async function uFile(buffer) {
const r2 = new AWS.S3({
endpoint: 'https://90ea285cb6b03a79a36923f11a34c3a2.r2.cloudflarestorage.com',
accessKeyId: '769433fbf8d0d975144746b83eb2619e',
secretAccessKey: '1679293fecd820a92788bbc6825ff948117284e0a5bcdea025903f06bfc57716',
region: 'auto',
signatureVersion: 'v4',
});
const { ext } = fromBuffer(buffer);
const fileName = 'file/' + rFileName() + '.' + ext; // Memperbaiki nama variabel
try {
const params = {
Bucket: 'bookworm',
Key: fileName,
Body: buffer,
ACL: 'public-read', // Ubah sesuai kebutuhan
};
const data = r2.upload(params).promise();
return {
status: 'success',
message: 'File uploaded successfully.',
location: `https://file.curvee.eu.org/${fileName}`,
};
} catch (error) {
return {
status: 'error',
message: 'Error uploading file',
error: error.message,
};
}
};
function rFileName() {
const randomBytes = crypto.randomBytes(10).toString('hex'); // 20 karakter heksadesimal
return randomBytes;
}
function getFileExtension(fileName) {
return path.extname(fileName);
}