test
This commit is contained in:
@@ -28,37 +28,61 @@ class ImageResize
|
||||
* @param $path
|
||||
* @param $size
|
||||
* @param $type
|
||||
* @param bool $deleteOriginal
|
||||
* @return string
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function resize($path, $size, $type)
|
||||
public function resize($path, $size, $type, $deleteOriginal = false)
|
||||
{
|
||||
// 1. Resolve source path
|
||||
$srcPath = file_exists(public_path($path))
|
||||
? public_path($path)
|
||||
: storage_path('app/public/' . $path);
|
||||
|
||||
if (!file_exists($srcPath)) {
|
||||
if (file_exists($path)) {
|
||||
$srcPath = $path;
|
||||
} else {
|
||||
// Last ditch effort: try to get from S3 if it's not local
|
||||
if (env('FILESYSTEM_DISK') == 's3' && Storage::disk('s3')->exists($path)) {
|
||||
$fileContent = Storage::disk('s3')->get($path);
|
||||
$tmpLocal = storage_path('app/public/temp_' . basename($path));
|
||||
file_put_contents($tmpLocal, $fileContent);
|
||||
$srcPath = $tmpLocal;
|
||||
$deleteOriginal = true; // Clean up the temp download
|
||||
} else {
|
||||
throw new \Exception("Source image not found: " . $path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Prepare thumb destination
|
||||
$name = basename($path);
|
||||
$folder = $this->mkdir($type);
|
||||
$path_thumb = "{$folder}/{$name}";
|
||||
$absPathThumb = public_path($path_thumb);
|
||||
|
||||
// 3. Resize and Save Thumb
|
||||
$img = Imagee::make($srcPath);
|
||||
$img->resize($size, null, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
});
|
||||
$img->save($absPathThumb, 100);
|
||||
|
||||
// 4. Handle S3 Upload
|
||||
if (env('FILESYSTEM_DISK') == 's3') {
|
||||
try{
|
||||
$file = Storage::disk("public")->get($path);
|
||||
}catch(Exception $e){
|
||||
$file = file_get_contents($path);
|
||||
}
|
||||
$img = Imagee::make($file);
|
||||
$img->resize($size, null, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
});
|
||||
// delete temp file
|
||||
$img->save("{$path_thumb}", 100);
|
||||
Storage::disk('s3')->put($path_thumb, file_get_contents($path_thumb));
|
||||
} else {
|
||||
// source can be in storage/app/public (from ->store('temp','public')) or public/
|
||||
$srcPath = file_exists(public_path($path))
|
||||
? public_path($path)
|
||||
: storage_path('app/public/' . $path);
|
||||
$img = Imagee::make($srcPath);
|
||||
$img->resize($size, null, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
});
|
||||
$img->save(public_path($path_thumb), 100);
|
||||
Storage::disk('s3')->put($path_thumb, file_get_contents($absPathThumb));
|
||||
// Remove local thumb after S3 upload
|
||||
if (file_exists($absPathThumb)) {
|
||||
unlink($absPathThumb);
|
||||
}
|
||||
}
|
||||
|
||||
// 5. Cleanup original if requested
|
||||
if ($deleteOriginal && file_exists($srcPath)) {
|
||||
unlink($srcPath);
|
||||
}
|
||||
|
||||
return $path_thumb;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,23 +130,9 @@ class Controller extends ExController
|
||||
|
||||
private function storeImageToS3($image): string
|
||||
{
|
||||
$path = '';
|
||||
|
||||
// first store temp file and resize it, then upload to s3
|
||||
// 1 - store temp file
|
||||
$tempPath = $image->store('temp', 'public');
|
||||
if ($tempPath) {
|
||||
$tempFilePath = storage_path('app/public/' . $tempPath);
|
||||
$image = new ImageResize();
|
||||
$path = $image->resize($tempPath, 322, 'brands');
|
||||
|
||||
// 2 - upload to s3 or keep local
|
||||
if (in_array(env('FILESYSTEM_DISK'), ['s3', 'minio'])) {
|
||||
Storage::disk('s3')->put($path, file_get_contents($path));
|
||||
unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
return $path;
|
||||
|
||||
$resizer = new ImageResize();
|
||||
return $resizer->resize($tempPath, 322, 'brands', true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,31 +101,11 @@ class Store extends FormRequest
|
||||
*/
|
||||
public function getPosterThumb()
|
||||
{
|
||||
$url = $this->storeImageToS3($this->file('poster'));
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
private function storeImageToS3($image): string
|
||||
{
|
||||
$path = '';
|
||||
|
||||
// first store temp file and resize it, then upload to s3
|
||||
// 1 - store temp file
|
||||
$image = $this->file('poster');
|
||||
$tempPath = $image->store('temp', 'public');
|
||||
if ($tempPath) {
|
||||
// $tempFilePath = storage_path('app/public/' . $tempPath);
|
||||
$image = new ImageResize();
|
||||
$path = $image->resize($tempPath, 322, 'posters');
|
||||
|
||||
// 2 - upload to s3 or keep local
|
||||
if (in_array(env('FILESYSTEM_DISK'), ['s3', 'minio'])) {
|
||||
Storage::disk('s3')->put($path, file_get_contents($path));
|
||||
unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
return $path;
|
||||
|
||||
$resizer = new ImageResize();
|
||||
return $resizer->resize($tempPath, 322, 'posters', true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -123,40 +123,21 @@ class Update extends FormRequest
|
||||
// delete old file from s3
|
||||
Storage::disk('s3')->delete($product->poster_thumb);
|
||||
} else {
|
||||
// delete old file
|
||||
unlink($product->poster_thumb);
|
||||
// delete old file local
|
||||
$oldPath = public_path($product->poster_thumb);
|
||||
if (is_file($oldPath)) unlink($oldPath);
|
||||
}
|
||||
|
||||
$url = $this->storeImageToS3($this->file('poster'));
|
||||
return $url;
|
||||
$image = $this->file('poster');
|
||||
$tempPath = $image->store('temp', 'public');
|
||||
|
||||
$resizer = new ImageResize();
|
||||
return $resizer->resize($tempPath, 322, 'posters', true);
|
||||
}
|
||||
|
||||
return $product->poster_thumb;
|
||||
}
|
||||
|
||||
private function storeImageToS3($image): string
|
||||
{
|
||||
$path = '';
|
||||
|
||||
// first store temp file and resize it, then upload to s3
|
||||
// 1 - store temp file
|
||||
$tempPath = $image->store('temp', 'public');
|
||||
if ($tempPath) {
|
||||
//$tempFilePath = storage_path('app/public/' . $tempPath);
|
||||
|
||||
$image = new ImageResize();
|
||||
$path = $image->resize($tempPath, 322, 'posters');
|
||||
|
||||
// 2 - upload to s3 or keep local
|
||||
if (in_array(env('FILESYSTEM_DISK'), ['s3', 'minio'])) {
|
||||
Storage::disk('s3')->put($path, file_get_contents($path));
|
||||
unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
|
||||
@@ -53,9 +53,19 @@ class Child
|
||||
foreach ($color['screens'] as $screen) {
|
||||
$folder = Carbon::now()->format('Y/m/d');
|
||||
|
||||
$path = $screen['image']->store($screen['image']);
|
||||
// Store original
|
||||
$path = $screen['image']->store("uploads/screens/{$folder}");
|
||||
|
||||
$thumbPath = $this->storeImageToS3($screen['image']);
|
||||
// Store and resize thumb
|
||||
$tempPath = $screen['image']->store('temp', 'public');
|
||||
$thumbPath = $this->image->resize($tempPath, 322, 'screens', true);
|
||||
|
||||
// Get screen size (local or s3)
|
||||
if (env('FILESYSTEM_DISK') == 's3') {
|
||||
$this->size = Storage::disk('s3')->size($path);
|
||||
} else {
|
||||
$this->size = filesize(public_path($path));
|
||||
}
|
||||
|
||||
Screen::create([
|
||||
'path' => $path,
|
||||
@@ -68,28 +78,4 @@ class Child
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function storeImageToS3($image): string
|
||||
{
|
||||
$path = '';
|
||||
// first store temp file and resize it, then upload to s3
|
||||
// 1 - store temp file
|
||||
$tempPath = $image->store('temp', 'public');
|
||||
if ($tempPath) {
|
||||
$tempFilePath = storage_path('app/public/' . $tempPath);
|
||||
$image = new ImageResize();
|
||||
$path = $image->resize($tempPath, 322, 'screens');
|
||||
|
||||
$this->size = filesize(public_path($path));
|
||||
|
||||
// 2 - upload local $path to s3
|
||||
// Store the image on S3
|
||||
if (in_array(env('FILESYSTEM_DISK'), ['s3', 'minio'])) {
|
||||
Storage::disk('s3')->put($path, file_get_contents(public_path($path)));
|
||||
unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,19 +79,23 @@ class ChildUpdate
|
||||
{
|
||||
if (!empty($screens)) {
|
||||
foreach ($screens as $screen) {
|
||||
if ($screen['id'] == 'undefined' || $screen['id'] == 'null' || $screen['id'] = null) {
|
||||
if ($screen['id'] == 'undefined' || $screen['id'] == 'null' || $screen['id'] == null) {
|
||||
$folder = Carbon::now()->format('Y/m/d');
|
||||
if ($screen['image']) {
|
||||
// 1. Store original (S3 if enabled)
|
||||
$path = $screen['image']->store("uploads/screens/{$folder}");
|
||||
$image = Screen::create([
|
||||
|
||||
// 2. Local temp for resizing
|
||||
$tempPath = $screen['image']->store('temp', 'public');
|
||||
$thumbPath = $this->image->resize($tempPath, 322, 'screens', true);
|
||||
|
||||
Screen::create([
|
||||
'path' => $path,
|
||||
'path_thumb' => "uploads/screens/thumbs/{$folder}/" . basename($path),
|
||||
'path_thumb' => $thumbPath,
|
||||
'name' => basename($path),
|
||||
'product_id' => $child_id,
|
||||
'size' => Storage::size($path)
|
||||
'size' => Storage::disk(env('FILESYSTEM_DISK'))->size($path)
|
||||
]);
|
||||
|
||||
$this->image->resize($image->path, 322, 'screens');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,18 +33,21 @@ class Screen
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$folder = Carbon::now()->format('Y/m/d');
|
||||
//$folder = 'uploads/screens/'.date('Y', time()).'/'.Carbon::now()->format('m').'/'.Carbon::now()->format('d');
|
||||
|
||||
foreach ($this->request as $screen) {
|
||||
$folder = Carbon::now()->format('Y/m/d');
|
||||
|
||||
// 1. Store original (S3 if enabled)
|
||||
$path = $screen->store("uploads/screens/original/{$folder}");
|
||||
$thumb = $this->img->resize($path, 350, 'screens');
|
||||
|
||||
// 2. Local temp for resizing
|
||||
$tempPath = $screen->store('temp', 'public');
|
||||
$thumb = $this->img->resize($tempPath, 350, 'screens', true);
|
||||
|
||||
$screens = new Screens();
|
||||
$screens->name = basename($path);
|
||||
$screens->path = $path;
|
||||
$screens->path_thumb = $thumb;
|
||||
$screens->size = filesize($path);
|
||||
$screens->size = Storage::disk(env('FILESYSTEM_DISK'))->size($path);
|
||||
$screens->product_id = $this->id;
|
||||
$screens->save();
|
||||
}
|
||||
|
||||
@@ -147,10 +147,10 @@ class Category extends Model
|
||||
);
|
||||
}
|
||||
|
||||
return (string) $this->image;
|
||||
return env('APP_URL') . '/' . $this->image;
|
||||
}
|
||||
|
||||
return (string) 'images/nophoto.jpg';
|
||||
return env('APP_URL') . '/images/nophoto.jpg';
|
||||
}
|
||||
|
||||
public function getParentId(): int
|
||||
|
||||
@@ -26,7 +26,7 @@ class AppServiceProvider extends ServiceProvider
|
||||
date_default_timezone_set('Asia/Tashkent');
|
||||
// set lang to uz
|
||||
if (App::environment(['staging', 'production'])) {
|
||||
URL::forceScheme('https');
|
||||
URL::forceScheme('http');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user