如何将上传的图像保存到laravel中的存储?

时间:2017-02-01 21:24:41

标签: php laravel laravel-5

我正在使用图像干预将图像保存到存储文件夹。我有下面的代码,它似乎只是保存带有空白图像的文件名。我想我需要一种方法将文件内容写入文件夹但是却在努力争取片段。

if ($request->hasFile('photo')) {
            $image      = $request->file('photo');
            $fileName   = time() . '.' . $image->getClientOriginalExtension();

            $img = Image::make($image->getRealPath());
            $img->resize(120, 120, function ($constraint) {
                $constraint->aspectRatio();                 
            });

            //dd();
            Storage::disk('local')->put('images/1/smalls'.'/'.$fileName, $img, 'public');

4 个答案:

答案 0 :(得分:9)

你需要做

if ($request->hasFile('photo')) {
            $image      = $request->file('photo');
            $fileName   = time() . '.' . $image->getClientOriginalExtension();

            $img = Image::make($image->getRealPath());
            $img->resize(120, 120, function ($constraint) {
                $constraint->aspectRatio();                 
            });

            $img->stream(); // <-- Key point

            //dd();
            Storage::disk('local')->put('images/1/smalls'.'/'.$fileName, $img, 'public');
}

答案 1 :(得分:0)

<strong class="product-item-name">
    <?php  
         $product_name = $block->escapeHtml($_item->getName());
         $truncated = (strlen($product_name) > 32) ? substr($product_name, 0, 32) . '...' : $product_name ;
     ?>
     <a title="<?= $block->escapeHtml($_item->getName()) ?>"
      href="<?= $block->escapeUrl($block->getProductUrl($_item)) ?>"
      class="product-item-link">
          <?php echo $truncated; ?>
      </a>
</strong>

答案 2 :(得分:0)

这是使用干预包在具有所需名称的存储路径上保存图像的另一种方法。 (使用Storage::putFileAs方法)

public function store(Request $request)
{
    if ($request->hasFile('photo')) {

        $image      = $request->file('photo');
        $image_name = time() . '.' . $image->extension();

        $image = Image::make($request->file('photo'))
            ->resize(120, 120, function ($constraint) {
                $constraint->aspectRatio();
             });

        //here you can define any directory name whatever you want, if dir is not exist it will created automatically.
        Storage::putFileAs('public/images/1/smalls/' . $image_name, (string)$image->encode('png', 95), $image_name);
    }
}

答案 3 :(得分:0)

简单代码。

if($request->hasFile('image')){
    $object->image = $request->image->store('your_path/image');
}

谢谢。