定义图像存储位置的最佳实践

时间:2018-02-06 15:25:46

标签: php git laravel

我在Laravel中构建电子商务应用程序,它需要保存来自各种页面的图像,例如添加产品,添加请求,更新配置文件等。我已经在控制器文件本身上定义了图像存储位置对于各自的项目。

UserController.php    
$targetPath = '/Users/apple/Documents/eCommApp/storage/app/public/uploads/' . $user . '/img/profile/';

ProductController.php 
$targetPath = '/Users/apple/Documents/eCommApp/storage/app/public/uploads/' . $user . '/img/product/';

我的问题是,每次通过git提交新代码时,我都需要不断更新远程服务器上的映像存储位置,因为它在本地和远程服务器中不同。

我的问题是:

  1. 我们可以在config /中创建一个constants.php,然后只在那里定义所有路径,然后在.gitignore中包含这个文件,以便在推送代码时忽略这个文件吗?

  2. 在Laravel中处理图像存储位置是最好的(安全,有效)方式吗?

  3. 寻找你的建议,

    谢谢

    PS:这是保存演出图像的代码。

    if ($request->hasFile('ref_img')) {
            if($request->file('ref_img')->isValid()) {
                $types = array('_original.', '_150.', '_128.', '_64.', '_32.');
                $sizes = array('150', '128', '64', '32');
    
                $targetPath = '/Users/apple/Documents/eCommApp/storage/app/public/uploads/' . $user . '/img/gig/';
    
                try {
                    $file = $request->file('ref_img');
                    $ext = $file->getClientOriginalExtension();
                    if ($gig->img == NULL){
                        $fName = time();
                    } else {
                        $fName = basename($gig->img, ".".$ext);
                    }
    
                    $o_name = $fName . array_shift($types) . $ext;
                    $original = Image::make($file->getRealPath());
                    $original->save($targetPath . $o_name);
                    foreach ($types as $key => $type) {
                        $newName = $fName . $type . $ext;
                        $newImg = Image::make($file->getRealPath());
                        $newImg->resize($sizes[$key], null, function ($constraint) {
                            $constraint->aspectRatio();
                        });
                        $newImg->save($targetPath . $newName);
                    }
                    $gig->img = 'storage/uploads/' . $user . '/img/gig/' . $fName . '.' . $ext;
                } catch (Illuminate\Filesystem\FileNotFoundException $e) {
                }
            }
        }
    

1 个答案:

答案 0 :(得分:4)

使用helpers之类的public_path()

$targetPath = public_path($user . '/img/profile/');

此助手将生成Laravel项目中public目录的完整路径。