在Laravel 5.5

时间:2018-02-18 16:13:32

标签: php laravel file-upload

我一直在玩多个文件,我已经成功管理了如何将多个文件(在我的情况下是图像)上传到Laravel的公共/存储文件夹中,但我想升级该方法以动态创建基于文件夹用户ID。

简而言之,当用户选择让我们说10个图像时,点击提交按钮,将创建一个包含其ID的文件夹,然后这10个图像将最终出现在此文件夹中。

这是我存储图像的功能:

public function store(Request $request) {
        $files = $request->file('file');

        if(!empty($files)):

            foreach($files as $file):
                Storage::disk('photos')->put($file->getClientOriginalName(), file_get_contents($file));
            endforeach;

        endif;
    }

文件系统:

'photos' => [
            'driver' => 'local',
            'root' => public_path('../public/storage'),
        ],

现在我被困在这里,无法让它如何让它发挥作用。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

只需创建它不存在的文件夹:

public function store(Request $request) {
    $files = $request->file('file');
    $folder = public_path('../public/storage/' . Auth::id(); . '/');

    if (!Storage::exists($folder)) {
        Storage::makeDirectory($folder, 0775, true, true);
    }

    if (!empty($files)) {
        foreach($files as $file) {
            Storage::disk(['drivers' => 'local', 'root' => $folder])->put($file->getClientOriginalName(), file_get_contents($file));
        }
    }
}

答案 1 :(得分:0)

这就是我使用Image Intervention Library的方式,使用文件而不是存储没有给我一个错误。我正在使用Laravel 5.6

注意:对于我的场景,我正在从视图中获取帖子ID到控制器,然后根据用户ID(如果存在)为用户创建文件夹后,将帖子保存在目录下。我也在使用storage_path而不是public路径,您可以根据需要进行更改

var lines = xdoc.Descendants("LineEntity")
    .Select(line => new Line
    {
        //Your rest of code same here

        Vertices = line.Elements("Vertices").Elements("Point").Select(p => new Point 
        {
            X = (decimal)p.Element("X"),
            Y = (decimal)p.Element("Y"),
        }).ToList()
    }).ToList();