| const AWS = require('aws-sdk'); |
| const fs = require('fs'); |
| const { fromBuffer } = require('file-type'); |
| const path = require('path'); |
| const crypto = require('crypto'); |
|
|
| |
| const r2 = new AWS.S3({ |
| endpoint: 'https://90ea285cb6b03a79a36923f11a34c3a2.r2.cloudflarestorage.com', |
| accessKeyId: '769433fbf8d0d975144746b83eb2619e', |
| secretAccessKey: '1679293fecd820a92788bbc6825ff948117284e0a5bcdea025903f06bfc57716', |
| region: 'auto', |
| signatureVersion: 'v4', |
| }); |
|
|
| |
|
|
| 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; |
| try { |
| const params = { |
| Bucket: 'bookworm', |
| Key: fileName, |
| Body: buffer, |
| ACL: 'public-read', |
| }; |
|
|
| 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'); |
| return randomBytes; |
| } |
|
|
| function getFileExtension(fileName) { |
| return path.extname(fileName); |
| } |
|
|