使用 intervention/image 上传/调整大小 Laravel API

Using intervention/image for upload /resizing with Laravel API

我正在尝试使用在 public(即 uploads/images)中创建的路径将图像上传到数据库,但不幸的是,它没有显示任何错误,图像也没有上传或保存到目录。

控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Image;

class ImagesController extends Controller
{
    public function index()
    {
        return view('image');
    }

    public function upload(Request $request)
    {
        $this->validate($request, [
            'images' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

        $image = $request->file('images');
        $input['imagename'] = time() . '.' . $image->getClientOriginalExtension();

        $destinationPath = public_path('/uploads/images');
        $img = Image::make($image->getRealPath());
        $img->resize(100, 100, function ($constraint) {
            $constraint->aspectRatio();
        })->save($destinationPath . '/' . $input['imagename']);

        $destinationPath = public_path('/images');
        $image->move($destinationPath, $input['imagename']);
        $this->postImage->add($input);

        if (!empty($input['imagename'])) {
            return response()->json([
                'success' => true,
                'data' => $input['imagename']->toArray()
            ]);
        }

        return true;
    }
}

路线

Route::post('upload', 'ImagesController@upload');

型号

namespace App;

use Illuminate\Database\Eloquent\Model;

class Image extends Model
{
    protected $fillable = ['image'];
}

在将图像文件保存到目录之前,请确保您已在 <form> 标签中添加了 enctype="multipart/form-data"

Chek 您已从位于 C:\xampp\htdocs\isp\config\filesystems.php 的文件系统更改 public 路径。 现在检查我的以下代码以了解并根据此修改您的代码。

    public function site(Request $request)
   {  


        if ($request->hasFile('imagename')) {
            $image = $request->file('imagename');
            $filename = 'image'.rand(1,5) . '.' . $image->getClientOriginalExtension();
            $location = public_path('uploads/image/' . $filename);
            Image::make($image)->save($location);
        }
        Session::flash('flash_message_success', 'Site profile updated successfully');
        return redirect()->route('site');


   }

我认为您在 public_path() 函数中提供了一个额外的 /。纠正它。并更改您的验证参数 'images' => 'required|image|mimes:jpeg,png,jpg,gif,svg,JPEG,PNG,JPG,GIF,SVG|max:2048',

希望满足任何一个条件就成功了

然后尝试采用这种风格运行

php artisan storage:link 

此外,将您的控制器更改为此

public function upload(Request $request)
    {

        $img = new Image();

        $validation = $request->validate([
            'title' => 'string',
            'image' => 'required|file|image|mimes:jpeg,png,gif,webp|max:2048'
        ]);
        $file      = $validation['image']; // get the validated file
        $extension = $file->getClientOriginalExtension();
        $filename  = 'mm-image-' . time() . '.' . $extension;
        $path      = $file->storeAs('/uploads/images', $filename);
        $img->image = $request->image;
        $img->title = $path;

        dd($img);


            if (!empty($img)){
                return response()([
                    'success' => true,
                    'data' => $img->toArray()
                ]);;

            }
    }