PHP code example of mcris112 / file-manager-system
1. Go to this page and download the library: Download mcris112/file-manager-system 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/ */
mcris112 / file-manager-system example snippets
composer
return [
"storage" => [
/********************************
*
* Define here what storage disk drivers should be supported
* and the storage size has each driver
*
*/
'size' => [
"local" => env('FM_STORAGE_LOCAL_SIZE', "1GB"),
"public" => env('FM_STORAGE_PUBLIC_SIZE', "1GB"),
//"s3" => env('FM_STORAGE_S3_SIZE', 0),
],
],
/********************************
*
* This is
use MCris112\FileSystemManager\Traits\CanViewFmFilePrivate;
class User extends Authenticatable
{
use CanViewFmFilePrivate;
//...
}
use MCris112\FileSystemManager\Facades\FileSystemManager;
FileSystemManager::file()->save(
$request->file('content'),
true, //is Public?
1,¨// created by id (Comes from user id)
'test/', // folder where it will be saved
null, // name - If name is not set, It will take filename of file
function (FmFileContent $data, FmFile $model){ // Do something after save, this can be null
// Do something
}
);
// This return a FmFile model
$model = FileSystemManager::file()->save(...);
use \MCris112\FileSystemManager\Facades\FileSystemManager;
use \MCris112\FileSystemManager\Models\FmFile;
// Get URL by model
$url = FileSystemManager::url( FmFile::first() );
// Get by path
$url = FileSystemManager::url( "documents/your-filename.jpg" );
use \MCris112\FileSystemManager\Facades\FileSystemManager;
// Retrieve the size used in kilobytes
$size = FileSystemManager::used();
// All size allowed
$size = FileSystemManager::size();
// How much space is left
$size = FileSystemManager::left();
use \MCris112\FileSystemManager\Facades\FileSystemManager;
// Get how much storage file is using
$size = FileSystemManager::file()->used();
// Get how much storage Avatar is using
$size = FileSystemManager::avatar()->used();
$list = FileSystemManager::content();
$load = 15;
// Can search by specific records - Returns CollectionsFmFileCollection
$list = FileSystemManager::list(
$load // -> How many files will get in paginated list
);
use \MCris112\FileSystemManager\Models\FmFile;
use \MCris112\FileSystemManager\Collections\FmFileCollection;
/** @var FmFileCollection $models */
$models = FmFile::get();
// You can use
$models->toResource(); // This will return a FmFileListResource::collection()
use MCris112\FileSystemManager\Traits\Resource\ResourceFmImageVariationTransformation;
class ProductResource extends JsonResource
{
use ResourceFmImageVariationTransformation;
public function toArray(Request $request): array
{
return [
'id' => $this->id,
"name" => $this->name,
// This function converts the normal relation into a complex array
'image' => $this->fmImageVariation(),
"timestamps" => [
"createdAt" => $this->created_at,
"updatedAt" => $this->updated_at,
]
];
}
}
use MCris112\FileSystemManager\Traits\Resource\ResourceFmImageVariationTransformation;
class ProductResource extends JsonResource
{
use ResourceFmImageVariationTransformation;
//Replace with your custom resource
protected string $fmImageResource = FmFileListResource::class;
}
use MCris112\FileSystemManager\Traits\HasFmImage;
class SomeModel extends Model
{
use HasFmImage;
}
use MCris112\FileSystemManager\Facades\FileSystemManagerTable;
public function up(): void
{
Schema::create('some_model', function (Blueprint $table) {
//This will define the relationship on table
FileSystemManagerTable::hasImage($table);
});
}
use MCris112\FileSystemManager\Traits\HasFmImageVariations;
use MCris112\FileSystemManager\Enums\FmFileSize;
class Product extends Model
{
use HasFmImageVariations;
}
// Can load all image variations
Product::with('fmimages')->get();
$prodcut->load('fmimages');
//Just load specific image variation
Product::withThumbnail()->get()
Product::withSquareImage()->get()
/**
* Load all or specific image size
* @param array|string|FmFileSize|null $sizes can be '*'|null for load all image sizes or an array for load specific image sizes
*/
Product::withFmImageSize(FmFileSize::VIDEO)->get()
use \Illuminate\Http\Resources\Json\ResourceCollection;
use MCris112\FileSystemManager\Traits\FmPagination;
class YourResource extends ResourceCollection
{
use FmPagination;
public function toArray(\Illuminate\Http\Request $request){
return [
"data" => $this->collection,
// now you can use this function to retrieve easily the pagination data
"pagination" => $this->paginate();
];
}
}
// FmPagination does
return [
'total' => $this->total(),
'perPage' => $this->perPage(),
'currentPage' => $this->currentPage(),
'totalPages' => $this->lastPage()
];
use \MCris112\FileSystemManager\Facades\FileSystemManager;
$folderManager = FileSystemManager::folder()->create("Name of folder");
use \MCris112\FileSystemManager\Facades\FileSystemManager;
/**
* Get the parents of files and folder to show it into the file manager interface
* @param int $id
* @param int|null $perPage
* @return \MCris112\FileSystemManager\FileManagerContent
*/
$content = FileSystemManager::folder()->content( $folderId )
use \MCris112\FileSystemManager\Facades\FileSystemManager;
/**
* @param int $id
* @return \MCris112\FileSystemManager\Models\FmFolder
*/
$content = FileSystemManager::folder()->find( $id )
use \MCris112\FileSystemManager\Facades\FileSystemManager;
$folderManager = FileSystemManager::folder( $FmFodlerOrIntOrNullableValue );
//Now will create a sub folder from parent folder
$folderManager->create("Sub Folder Name");
//For any case you couldnt set a parent folder, you can set it
$folderManager->parent($FmFodlerOrIntOrNullableValue)->create();
use \MCris112\FileSystemManager\Facades\FileSystemManager;
$folderManager = FileSystemManager::folder( $FmFodlerOrIntOrNullableValue );
//Now will create a sub folder from parent folder
$folderManager->create("Sub Folder Name");
//For any case you couldnt set a parent folder, you can set it
$folderManager->parent($FmFodlerOrIntOrNullableValue)->create();
use \MCris112\FileSystemManager\Facades\FileSystemManager;
// For delete an specific file or content
$folderManager = FileSystemManager::folder($folder)->delete($fmFileOrFmFolderOrArray);
// For delete the folder
$folderManager = FileSystemManager::folder($folder)->delete();
// For delete the folder and the content inside
$folderManager = FileSystemManager::folder($folder)->delete(null , true);
use \MCris112\FileSystemManager\Facades\FileSystemManager;
/**
* Find a file by id or full path (folder + filename)
* @param int|string $idOrPath
* @return FmFile
* @throws FmFileNotFoundException
*/
$content = FileSystemManager::folder()->find( $id )
use \MCris112\FileSystemManager\Facades\FileSystemManager;
$folderManager = FileSystemManager::file($file)->delete();
//or
/** @var \MCris112\FileSystemManager\Models\FmFile $file */
$file->delete(); // Automatically It will delete the file in your disk
return [
//...
"user" => [
"avatar" => true, // Set this true to start using avatars
"width" => 512, // Avatar width
"height" => 512, // Avatar height
"quality" => 80, // file quality of JPG
"generatorUrl" => "https://ui-avatars.com/api/?size=512&name="
]
]
use MCris112\FileSystemManager\Traits\UserHasAvatar;
class User extends Authenticatable
{
use UserHasAvatar;
//...
}
use \MCris112\FileSystemManager\Facades\FileSystemManager;
$avatarManager = FileSystemManager::avatar()->used()