首页 > 解决方案 > Laravel 图像干预错误

问题描述

我正在尝试使用带有 laravel 的图像干预来调整图像大小。

我的代码:

<?php

namespace App\Http\Controllers;

use App\Ad;
use App\Categorie;
use App\Http\Requests\AdsRequest;
use App\Mail\RejectedAd;
use App\Mail\ValidatedAd;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;

class AdController extends Controller
{

    /**
     * AdController constructor.
     */
    public function __construct()
    {
        $this->middleware('auth', ['except' => ['index', 'show']]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param AdsRequest $request
     * @return \Illuminate\Http\Response
     */
    public function store(AdsRequest $request)
    {
        $validated = $request->validated();
        $idAuthor = Auth::user()->id;

        if (Auth::user()->activite !== 'particulier') {
            $pro_ad = true;
        } else {
            $pro_ad = false;
        }
        $ad = new Ad();
        $ad->title = $validated['title'];
        $ad->content = $validated['content'];
        $ad->price = $validated['price'];
        $ad->zip = $validated['zip'];
        $ad->city = $validated['city'];
        $ad->categorie_id = $validated['categorie'];
        $ad->user_id = $idAuthor;
        $ad->publication_date = Carbon::now('Europe/Paris')->addDay(2);
        if (isset($validated['descr']) && $validated['descr'] !== null) {
            $ad->subcategory = $validated['descr'];
        }
        $ad->pro = $pro_ad;
        $ad->save();
        if (isset($validated['tag']) && $validated['tag'] !== null) {
            $ad->Tag()->attach($validated['tag']);
        }
        $ad->save();

        if ($request->hasFile('file')) {
            Storage::disk('public')->makeDirectory("ad-$ad->id");
            foreach ($request->file('file') as $image) {
                if ($image) {
                    // Get filename with the extension
                    $filenameWithExt = $image->getClientOriginalName();
                    // Get just filename
                    $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
                    //Get just extension
                    $extension = $image->getClientOriginalExtension();
                    // Filename to store
                    $filenameToStore = $filename . '_' . time() . '.' . $extension;
                    // Upload image
                    $image->storeAs("/public/ad-$ad->id", $filenameToStore);
                    print_r('resize');
                    $img = Image::make(storage_path('app/public') . "/ad-$ad->id/" . $filenameToStore)->resize(400, 150, function ($constraint) {
                        $constraint->aspectRatio();
                    });
                    $img->save(storage_path('app/public') . "/ad-$ad->id/" . $filenameToStore);
                    print_r('resize fin');
                    $ad->File()->create(['path' => $filenameToStore]);
                }
            }
        }
        $ad->save();
        return redirect(route('annonces.show', ['id' => $ad->id]));
    }
}

但只print_r显示第一个,其余的都没有运行。
预先感谢您的回答。
尼古拉斯

标签: phplaravel

解决方案


推荐阅读