PapaKofi13 / php-multifile-bundle

A multiple file upload tool for php

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OVERVIEW

By calling a minimum of 4 methods you can upload as many files as possible.

PHP MULTIFILE BUNDLE PHP Multifile Bundle is a php class that handles file uploads,validation and other cool stuff when uploading files, it provides you with the following services.

  • Prettify The standard php $_FILES superglobal array is quite messy and unorganized, by calling the 'pretty' method in this class returns a more organized array that is easy to understand.

  • File validator The Multifile Bundle class comes with a validator that takes the pretty method as an argument and pass it through series of checks to make sure the file(s) can be trusted before it returns the file back

  • Blacklist and Whitelist Extensions The class makes sure all the standard file processing procedures are followed, so it provides a way for you to add blacklist or whitelist extensions and the validator acts accordingly.

  • Override Default Error Messages The class comes with default errors messages, but the user has the chance to overide it anytime by passing their custom errors through a static configuration method.

INSTALLATION

Clone this repository by typing the line below Open your terminal in your project directory and type

git clone git@github.com:benacq/php-multifile-bundle.git

USAGE

include the class file into your project 

The class takes two arguments into it's constructor, the file array and maximum number of uploads, both argumets are required when you pass a multiple file, but when you pass a single file only the file argument is required.

UPLOADING MULTIPLE FILES

<?
    $multifile = new MultifileBundle(array $files [, int $max_upload]);
    $pretty_array = $multifile->pretty();
    $validated_pretty = $multifile->validate(array $pretty_array, [,int $max_upload_size]);
    $multifile->save_to_dir(array $validated_pretty, string $path);

The pretty method returns an error if something goes wrong, otherwise an array that is more organized and easier to work with, users can choose to implement their own validation with the returned array or use the validator that comes with the class.

The validate method also returns a an array[pretty], but this time it has undergone validation and can be trusted unlike the pretty_array which is not validated.It returns an error if there is any.

The save_to_dir method takes two required parameters, an array[validated_pretty] and a string[path]. it returns the path if the file was moved successfully otherwise an error.

With these four lines of code you will have your files uploaded safely into the specified directory.

UPLOADING SINGLE FILES

To upload a single file, its as simple as passing the file into the constructor of the class,
then you call the upload_single method of the class to handle single file uploads.
it takes one required argument, the maximum file size allowed
<?
   $single = new MultifileBundle($file);
   $validated_single = $single->upload_single(int $max_upload_size);
   $single->save_to_dir(array $validated_single, string $path);

Configurations

All the configurations are handled by a class named MultifileConfig.
With this class you can override error message and set extension restrictions.

NOTE

All configurations must be done before creating an instance of the MultifileBundle class

Blacklisting and Whitelisting extentions

The configuration class has two static arrays which handle extension restrictions, all you have to do is add extensions to the array.
<?
    array_push(MultiFileConfig::$blacklist, "png","jpg","html","jpeg");//By adding these line, any file with any of these extensions will be seen as malicious and therefore will be rejected.
    array_push(MultiFileConfig::$whitelist, "mp4","mp3");//By adding these line, only files with these extensions will be accepted.

NOTE

You cannot set both blacklist and whitelist at the same time, if you set a whitelist, automatically all files that do not fall within the whitelist are considered blacklisted.
Same way if you set a blacklist all other files automatically becomes whitelisted and therefore will be accepted.

Setting Custom Errors

The configuration class comes with a predefined error messages for all errors that may occur, these messages are configured by a static method called config_errors which takes an associative array as an argument. This array has a fixed key which should match the one in the class, the value is where your custom error goes.
<?
  $my_custom_errors = array(
    "UPLOAD_NUMBER_LIMIT_EXCEEDED"=>"custom upload exceeded message",
    "FILE_CORRUPT"=>"custom file corrupt message",
    "PARTIAL_UPLOAD"=>"custom partial upload message",
    "UPLOAD_NUMBER_LIMIT_EXCEEDED"=>"custom upload exceeded message"
  );
  MultiFileConfig::config_errors($my_custom_errors);

below are all the error keys that can be overriden with a custom error.

Error Keys Meaning
UPLOAD_MAX_SIZE_USER When the file size exceeds the maximum size limit set by the developer
UPLOAD_MAX_FORM When uploaded file size exceeds the specified in your html form
FILE_CORRUPT This normally happens when the error status code is null or is an array
ON_UPLOAD_EMPTY When the user tries to submit the form without choosing a file
PARTIAL_UPLOAD When the selected file fails to upload fully to the server
UPLOAD_ERR_UNKNOWN All validations are done but something went wrong , its quite unlikely to happen
UPLOAD_ABORT_ON_EXT This error occurs when the upload terminate because of the file extension
ON_BLACKLIST_BREACH This occurs when a blacklisted file is detected
ON_WHITELIST_BREACH When an unknown file is detected, files that does not exist in the whitelist
ERR_MOVE_TO_DIR When an error occur while moving the file to the specified directory
UPLOAD_NUMBER_LIMIT_EXCEEDED When the user tries to upload more files than is allowed

FULL UPLOAD EXAMPLE CODE

<?
    //ALL CONFIGURATIONS MUST BE DONE BEFORE INSTANTIATING THE CLASS
    $my_custom_errors = array(
    "UPLOAD_NUMBER_LIMIT_EXCEEDED"=>"custom upload exceeded message",
    "FILE_CORRUPT"=>"custom file corrupt message",
    );
    MultiFileConfig::config_errors($my_custom_errors);

    //NOTE: Only one of these two can be set, either whitelist or blacklist, never both.
    array_push(MultiFileConfig::$blacklist, "exe","bin","bat","php");

    $multifile = new MultifileBundle($_FILES['file_name'], 5);
    $pretty_array = $multifile->pretty();//This returns an array or error
    $validated_pretty = $multifile->validate($pretty_array, 2000000);//Same with validate, an error or array
    $multifile->save_to_dir($validated_pretty, "./my_uploads");// This returns the path if successfull otherwise error

Contact

About

A multiple file upload tool for php


Languages

Language:PHP 100.0%