使用Storage Laravel 5.2类上传文件/图像

时间:2016-05-04 13:32:23

标签: php image laravel laravel-5

首先,我很抱歉我的英语不好。

我想使用类 Storage 将文件/图像从我的驱动程序上传到我的项目目录。我希望每个文件/图像都上传/移动到我的public/img目录。我在我的视图和帖子控制器上使用Form::file('img'),我写了这个

 $img = Input::file('img');
    if ($img !== null) {
        $filename       = $img->getClientOriginalName();
        Storage::disk('uploads')->put('filename', $filename);

        $jenis->img     = $filename;  
    }

在我的 config/filesystem 上我写了

'uploads' => [
        'driver' => 'local',
        'root'   => public_path() . '/img',
    ],

但是,我的 public/img 目录上没有任何内容,也没有新的文件/图像。 你可以帮我解决我的代码错误吗? 我希望你们可以帮助我提供另一个关于如何在laravel上传文件/图像的好方法

3 个答案:

答案 0 :(得分:7)

看起来您的问题是您没有存储文件,而是引用其名称而不是其内容。

试试这个:

Storage::disk('uploads') -> put($filename, file_get_contents($img -> getRealPath()));

答案 1 :(得分:0)

在我的文件系统文件中,我以这种方式配置我的图像目录:

'uploads' => [
    'driver' => 'local',
    'root'   => public_path("/img"),
],

我认为你可以用你的方式,但另一点。

要从视图中获取文件,您应该使用File :: get Laravel函数:

$filename = $img->getClientOriginalName();
Storage::disk('uploads')->put($filename, \File::get($file));

这样就足够了,你可以使用文件系统中指定的目录中上传的文件名保存文件。

答案 2 :(得分:0)

    if ($request->hasFile('original_pic')) {
            $original_pic = $request->file('original_pic');

            $file_extension=$original_pic>getClientOriginalExtension();
            $filename = time() . '.' . $file_extension;

            # upload original image
            Storage::put('ArticlesImages/' . $filename, (string) file_get_contents($original_pic), 'public');

            # croped image from request.
            $image_parts = explode(";base64,", $request->input('article_image'));
            $image_base64 = base64_decode($image_parts[1]);

            Storage::put('ArticlesImages/croped/' . $filename, (string) $image_base64, 'public');

            # get image from s3 or local storage.
            $image_get = Storage::get('ArticlesImages/croped/' . $filename);

            # resize 50 by 50 1x
            $image_50_50 = Image::make($image_get)
                    ->resize(340, 227)
                    ->encode($file_extension, 80);

            Storage::put('ArticlesImages/1x/' . $filename, (string) $image_50_50, 'public');

            $file_url = Storage::url('ArticlesImages/croped/' . $filename);

            return response()->json(['success' => true, 'filename' => $filename, 'file_url' => $file_url], 200);
        }