����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/1630575/root/proc/1630575/root/home/builderbox/././www/common/Files/Actions/ |
Upload File : |
<?php
namespace Common\Files\Actions;
use Arr;
use Common\Files\Events\FileEntryCreated;
use Common\Files\FileEntry;
use Exception;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Http\UploadedFile;
use Image;
use Intervention\Image\Constraint;
use Storage;
class UploadFile
{
/**
* @param string $disk
* @param UploadedFile|array $uploadedFile
* @param array $params
* @param FileEntry|null $fileEntry
* @return FileEntry
*/
public function execute($disk, $uploadedFile, $params, $fileEntry = null)
{
if (!$fileEntry) {
$fileEntry = app(CreateFileEntry::class)->execute(
$uploadedFile,
$params,
);
}
$this->storeUpload($disk, $fileEntry, $uploadedFile, $params);
if ($disk !== 'public') {
event(new FileEntryCreated($fileEntry, $params));
}
return $fileEntry;
}
/**
* @param string $diskName
* @param FileEntry $entry
* @param UploadedFile|array|string $contents
* @param array $params
*/
private function storeUpload(
$diskName,
FileEntry $entry,
$contents,
$params
) {
if ($diskName === 'public') {
$disk = Storage::disk('public');
$prefix = $entry->disk_prefix;
} else {
$disk = Storage::disk('uploads');
$prefix = $entry->file_name;
}
$options = [
'mimetype' => $entry->mime,
'visibility' => $entry->public
? 'public'
: config('common.site.remote_file_visibility'),
];
if (is_a($contents, UploadedFile::class)) {
$disk->putFileAs($prefix, $contents, $entry->file_name, $options);
} else {
// might have file meta as array or just file string contents
$contents =
is_array($contents) && Arr::get($contents, 'contents')
? $contents['contents']
: $contents;
$disk->put("$prefix/{$entry->file_name}", $contents, $options);
}
if ($diskName !== 'public') {
try {
$this->maybeCreateThumbnail(
$disk,
$entry,
$contents,
$options['visibility'],
);
} catch (Exception $e) {
//
}
}
}
private function maybeCreateThumbnail(
FilesystemAdapter $disk,
FileEntry $entry,
$contents,
string $visibility
) {
// only create thumbnail for images over 500KB in size
if ($entry->type === 'image' && $entry->file_size > 500000) {
$this->setMemoryLimit();
$img = Image::make($contents)->orientate();
$img->fit(350, 250, function (Constraint $constraint) {
$constraint->upsize();
});
$img->encode($entry->extension === 'png' ? 'png' : 'jpg', 60);
$options = [
'mimetype' => $img->mime(),
'visibility' => $visibility,
];
$disk->put("{$entry->file_name}/thumbnail.jpg", $img, $options);
$entry->fill(['thumbnail' => true])->save();
}
}
private function setMemoryLimit()
{
$new = 512;
$current = (int) ini_get('memory_limit');
if ($current < $new) {
@ini_set('memory_limit', "${$new}M");
}
}
}