PHP client for the Byteship Upload API.
You can install the package via composer:
composer require devhammed/byteship-phpThe first thing you need to do is to get an API key at Byteship. You'll find more info at the Byteship Docs.
use Devhammed\Byteship\Client;
$client = new Client($_ENV['BYTESHIP_API_KEY']);
$token = $client->createUploadToken(
folder: "uploads",
maxUploadBytes: 10 * 1024 * 1024,
);
echo $token->uploadToken->token;use Devhammed\Byteship\Client;
use Devhammed\Byteship\Enums\Visibility;
use Devhammed\Byteship\ValueObjects\UploadProgress;
$client = new Client($_ENV['BYTESHIP_API_KEY']);
$file = fopen('photo.jpg', 'rb');
$uploaded = $client->upload(
$file,
filename: "photo.jpg",
contentType: "image/jpeg",
path: "uploads/photo.jpg",
visibility: Visibility::Public,
onProgress: function (UploadProgress $progress) {
echo round($progress->percent) . '% uploaded';
},
);
echo "#{$uploaded->id} - {$uploaded->url}";use Devhammed\Byteship\Client;
use Devhammed\Byteship\Error;
$client = new Client($_ENV['BYTESHIP_API_KEY']);
try {
$client->createUploadToken(
folder: "uploads",
maxUploadBytes: 10 * 1024 * 1024,
);
} catch (Error $error) {
echo "Error creating upload token: {$error->getError()} - {$error->getStatus()} - {$error->getMessage()}";
}You can check this folder for more usage examples.
This package ships with a service provider for Laravel that will automatically setup the client for your application.
To get started, create an environment variable named BYTESHIP_API_KEY in your .env file with your Byteship API key:
BYTESHIP_API_KEY=your-api-keyThen, open config/filesystems.php and add the byteship disk configuration:
return [
// ...
'disks' => [
'byteship' => [
'driver' => 'byteship',
'visibility' => 'public',
'api_key' => env('BYTESHIP_API_KEY'),
],
],
// ...
];You should now be able to use the Byteship disk in your Laravel application just like any other storage drivers:
use Illuminate\Support\Facades\Storage;
Storage::disk('byteship')->put('hello.txt', 'Hello, Byteship!'); // true/false
Storage::disk('byteship')->get('hello.txt'); // "Hello, Byteship!"
Storage::disk('byteship')->url('hello.txt'); // "https://cdn.byteship.dev/f/12345/hello.txt" (only for public files)
Storage::disk('byteship')->temporaryUrl('hello.txt', now()->addHour()); // "https://cdn.byteship.dev/f/12345/hello.txt?token=secret-token" (only for private files)
Storage::disk('byteship')->temporaryUploadUrl('hello.txt', now()->addHour(), ['byte_size' => 1024]) // ['file_id' => '123', 'upload_id' => '456', 'upload_token' => 'd34db33f', 'url' => 'https://...', 'complete_url' => 'https://...', 'headers' => ['content-type' => 'text/plain']] (use the complete URL + upload ID + upload_token to complete the upload after sending the file to the url + headers)
Storage::disk('byteship')->delete('hello.txt'); // true/false
Storage::disk('byteship')->exists('hello.txt'); // true/false
Storage::disk('byteship')->mimeType('hello.txt'); // "text/plain"
Storage::disk('byteship')->visibility('hello.txt'); // "public" / "private"
Storage::disk('byteship')->size('hello.txt'); // 16RECOMMENDED: You should set the default disk to
byteshipinsideconfig/filesystems.phpso you won't have to specify the disk name everytime you work with Storage.
composer testPlease see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.