Last active
January 17, 2019 18:12
-
-
Save milivojsa/c83902908ca8ed7d43b3adc03add15c8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace App\Services; | |
| use Storage; | |
| class FileService | |
| { | |
| /** | |
| * @param \Illuminate\Http\UploadedFile $file | |
| * @param string $dir | |
| * @param string $name | |
| * @param bool $public - Append public prefix to directory | |
| * | |
| * @return string - Name of the file or false | |
| */ | |
| public function upload($file, $dir, $name = '', $public = true) | |
| { | |
| try { | |
| $this->processUpload($file, $dir, $name, $public); | |
| } catch (Exception $e) { | |
| report($e); | |
| return false; | |
| } | |
| } | |
| /** | |
| * @param \Illuminate\Http\UploadedFile $file | |
| * @param string $dir | |
| * @param string $name | |
| * @param bool $public - Append public prefix to directory | |
| * | |
| * @return string - Name of the file/files | |
| */ | |
| private function processUpload($file, $dir, $name, $public) | |
| { | |
| if ($public === true) { | |
| $this->makeDirectory("public/{$dir}"); | |
| } | |
| if (is_array($file)) { | |
| return $this->processMultipleFileUploads($dir, $file, $name); | |
| } | |
| return $this->processSingleFileUpload($dir, $file, $name); | |
| } | |
| /** | |
| * @param string $dir | |
| * @param \Illuminate\Http\UploadedFile $file | |
| * @param string $name | |
| * | |
| * @return string | |
| */ | |
| private function processSingleFileUpload($dir, $file, $name) { | |
| // TODO | |
| // IMAGE OPTIMIZATION | |
| // if ($file) | |
| // return $this->processImageUpload($dir, $name, $height = false, $width = false); | |
| return $file->storeAs( | |
| $dir, | |
| $this->getFileNameWithExtension($file, $name) | |
| ); | |
| } | |
| /** | |
| * @param string $dir | |
| * @param array $files | |
| * @param string $name | |
| * | |
| * @return array - Names of the uploaded files | |
| */ | |
| private function processMultipleFileUploads($dir, $files, $name) { | |
| $uploadedFiles = []; | |
| foreach ($files as $file) { | |
| $uploadedFiles[] = $this->processSingleFileUpload($dir, $file, $name); | |
| } | |
| return $uploadedFiles; | |
| } | |
| /** | |
| * Makes directory if it does not exist | |
| * | |
| * @param string $dir | |
| * | |
| * @return void | |
| */ | |
| private function makeDirectory($dir) | |
| { | |
| if (! Storage::exists($dir)) { | |
| Storage::makeDirectory($dir); | |
| } | |
| } | |
| /** | |
| * @param \Illuminate\Http\UploadedFile $file | |
| * @param string $name | |
| * @return string - File name with extension | |
| */ | |
| private function getFileNameWithExtension($file, $name) { | |
| if ($name === '') { | |
| return $file->hashName(); | |
| } | |
| return $name . '_' . $file->hashName(); | |
| } | |
| } |
milepanic
commented
Jan 17, 2019
hashName();
else
$name .= '_' . mt_rand() . '.' . $file->getClientOriginalExtension();
// save file and return path
return $file->storeAs($dir, $name);
} catch (Exception $e) {
return $e;
}
}
/**
*
* Method for multiple file upload
*
*/
public static function uploadMultiple($files, $dir, $name = false)
{
if (! is_array($files)) return null;
$uploaded = [];
foreach ($files as $file) {
if ($file != null) {
$uploaded[] = self::upload($file, $dir, $name);
}
}
return $uploaded;
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment