1. Go to this page and download the library: Download jobtech/laravel-chunky library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// config/chunky.php
[
/*
|--------------------------------------------------------------------------
| Default disks
|--------------------------------------------------------------------------
|
| This option defines the disks on which to store the chunks from an upload
| request as well as the final merged file. If you don't need to save the
| files into a sub folder just set null as value.
|
*/
'disks' => [
'chunks' => [
'disk' => env('CHUNKY_CHUNK_DISK'),
'folder' => 'chunks',
],
],
/*
|--------------------------------------------------------------------------
| Default index
|--------------------------------------------------------------------------
|
| This option defines if chunky should start counting the chunks indexes
| from 0 (ChunkySettings::INDEX_ZERO) or 1 (ChunkySettings::INDEX_ONE). You
| can override this feature with any number, but the indexes must always
| be index + n or the integrity check for the chunks folder will throw an
| exception.
|
*/
'index' => \Jobtech\LaravelChunky\ChunkySettings::INDEX_ZERO,
/*
|--------------------------------------------------------------------------
| Additional options
|--------------------------------------------------------------------------
|
| This option defines the additional settings that chunky should pass to
| the `storeAs` method while saving chunks or the merged file. This can be
| useful, for example, when storing public files in S3 storage.
|
*/
'options' => [
'chunks' => [
// 'visibility' => 'public'
],
],
];
// Example with `auto_merge = false`
use Jobtech\LaravelChunky\Http\Requests\AddChunkRequest;
class UploadController extends Controller {
// [...]
public function chunkUpload(AddChunkRequest $request) {
$chunk = Chunky::handle($request, 'folder-is-optional');
if($chunk->isLast()) {
// See section below for merge or
// implement your own logic
}
return $chunk->toResponse();
}
}
// config/chunky.php
[
// [...]
/*
|--------------------------------------------------------------------------
| Merge settings
|--------------------------------------------------------------------------
|
| This option defines the merge handler that should be used to perform the
| chunks merge once the upload is completed (automagically depending on
| `auto_merge` config value.
|
| `connection` and `queue` keys define which queue and which connection
| should be used for the merge job. If connection is null, a synchronous
| job will be dispatched
*/
'merge' => [
'handler' => \Jobtech\LaravelChunky\Handlers\MergeHandler::class,
'connection' => env('CHUNKY_MERGE_CONNECTION', 'sync'),
'queue' => env('CHUNKY_MERGE_QUEUE'),
],
];
use Jobtech\LaravelChunky\Http\Requests\AddChunkRequest;
use Jobtech\LaravelChunky\Jobs\MergeChunks;
class UploadController extends Controller {
// [...]
public function chunkUpload(AddChunkRequest $request) {
$chunk = Chunky::handle($request, 'folder-is-optional');
if($chunk->isLast()) {
$job = new MergeChunks($request, 'chunks-folder', 'destination/path/to/merge.ext');
dispatch(
$job->onConnection('your-connection')
->onQueue('your-queue')
);
}
return $chunk->toResponse();
}
}
use Jobtech\LaravelChunky\Contracts\MergeHandler;
class MyHandler implements MergeHandler {
private ChunkyManager $manager;
/**
* @param \Jobtech\LaravelChunky\Contracts\ChunkyManager $manager
* @return \Jobtech\LaravelChunky\Handlers\MergeHandler
*/
public function setManager(ChunkyManager $manager): MergeHandler
{
$this->manager = $manager;
return $this;
}
/**
* @return \Jobtech\LaravelChunky\Contracts\ChunkyManager
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
public function manager(): ChunkyManager
{
return $this->manager;
}
/**
* @param \Jobtech\LaravelChunky\Http\Requests\AddChunkRequest $request
* @param string $folder
*
* @return \Illuminate\Foundation\Bus\PendingDispatch|string
*/
public function dispatchMerge(AddChunkRequest $request, string $folder)
{
// Your logic here
}
/**
* @param string $chunks_folder
* @param string $merge_destination
*
* @return string
*/
public function merge(string $chunks_folder, string $merge_destination): string
{
// Your logic here
}
/**
* @return \Jobtech\LaravelChunky\Contracts\MergeHandler
*/
public static function instance(): MergeHandler
{
return new static();
}
}
public function chunkUpload(AddChunkRequest $request) {
$chunk = Chunky::handle($request, 'folder-is-optional');
if($chunk->isLast()) {
Chunky::merge('upload-folder', 'your/merge/file.ext');
}
return $chunk->toResponse();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.