rootscratch/cloudstorage

Cloudflare R2 Storage w/ aws-sdk-php

v1.0.1 2025-02-16 13:06 UTC

This package is auto-updated.

Last update: 2025-05-18 17:07:17 UTC


README

CF R2 Storage

Cloudflare R2 Storage PHP

This project allows users to upload/delete files to Cloudflare R2 storage using PHP and AWS SDK. It supports image, video, and document uploads with flexible validation.

Features

  • Upload files to Cloudflare R2
  • Supports multiple categories (image, video, docs, or a single file type)
  • Delete files from Cloudflare R2
  • Uses AWS S3 SDK for managing R2 storage
  • Prevents invalid file uploads
  • File size limit: Default is 200MB (can be customized)

Deployment

To deploy this via cloning this URL

git clone https://github.com/jaycee0610/CF-R2-Storage-PHP.git
cd cloudflare-r2-upload
composer require aws/aws-sdk-php

Or Via Composer Package

composer require rootscratch/cloudstorage

Usage/Examples

Add your Cloudflare R2 credentials:

  • Using Composer Package
require_once __DIR__ . '../vendor/autoload.php';
use Rootscratch\Cloudstorage\Configuration;

// Set configuration values
Configuration::setEndpoint("https://your_end_point.r2.cloudflarestorage.com");
Configuration::setBucketName("bucket_name");
Configuration::setAccessKey("access_key");
Configuration::setSecretKey("secrey_key");
new Configuration();

Upload a File

use Rootscratch\Cloudstorage\UploadFile;
$cloud_upload = new UploadFile();
$upload_file = $cloud_upload->uploadFile($_FILES['test'], null, null);

echo json_encode($upload_file, JSON_PRETTY_PRINT);

✅ Success Response

{
   "status": "success",
   "message": "File uploaded successfully.",
   "file_name": "randfilename.png",
   "mime_type": "image\/png"
}

❌ Error Response

{ "status": "error", "message": "Unsupported file type." }

Delete a File

To delete a file, use:

use Rootscratch\Cloudstorage\DeleteFile;
$cloud_delete = new DeleteFile();
$delete_file = $cloud_delete->deleteFile('filename.png', null);

echo json_encode($delete_file, JSON_PRETTY_PRINT);

✅ Response

{ "status": "success", "message": "File deleted successfully.", "file_name": "filename.png" }

Valid File Categories

Category Allowed Formats
image jpg, jpeg, png, gif, webp, svg
video mp4, mov, avi, mkv
docs pdf, docx, xlsx, txt
archives zip, rar
database sql
Specific File pdf pdf
null All

File Size Limit

  • The default file size limit is 200MB.
  • You can customize the size limit by passing the $sizeLimit parameter (in bytes) to the uploadFile method.

Example:

$cloud_upload = new UploadFile();
$upload_file = $cloud_upload->uploadFile($_FILES['test'], null, null, 50); // 50MB limit

Base64Image to File

use Rootscratch\Cloudstorage\UploadFile;

$cloud_upload = new UploadFile();
$base64_image = 'data:image/png;base64,.';
$convert = $cloud_upload->base64Image($base64_image, 'filename.png');
$upload = $cloud_upload->uploadFile($convert, null, null);

echo json_encode($upload, JSON_PRETTY_PRINT);

Cloudflare R2 Returning 403?

  • Go to Cloudflare DashboardR2 StoragePermissions
  • Enable Public Read Access for the bucket.