Как загрузить изображение в postman — с помощью laravel

#php #json #laravel #image

#php #json #laravel #изображение

Вопрос:

введите описание изображения здесьвведите описание изображения здесьЯ пытаюсь загрузить изображение в postman, в моем json есть два объекта, и он выглядит так:

 {
"user_profile": {

    "email": "shahzad176@ovadamd.com",
    "password": "admin123",
    "password_confirmation": "admin123",
    "status": 0,
    "first_name": "Shahzad",
    "middle_name": "Hussain",
    "last_name": "Shah",
    "date_of_birth": "2015-01-01",
    "gender": "M",
    "area_id": 1,
    "address": "Minhatten NY",
    "city": "New York",
    "state": "Washington",
    "zip": "12312",
    "fax": "111-111-1111",
    "phone_extension": "2471",
    "work_phone": "111-111-1111",
    "phone_no": "111-111-1111",
    "emergency_contact": "111-111-1111",
    "social_security": "111-11-1111",
    "module_id": 6
    },

"privileges": {

    "is_super_admin": 0,

  "facilities": [
      {
        "facility_id": 1,
        "is_facility_supervisor": 0,
        "speciality_id": 1,
        "priv_key": "ced",
        "role_id": 2
      }
 ]
        }
      }
 

Мой контроллер:

                   $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['privileges'];
    $userProfile['is_super_admin'] = $userPrev['is_super_admin'];
    $facilities = $userPrev['facilities'];

    $bodyObj = array_merge($userProfile, $userPrev);


    $validator = UserValidations::validateUser($bodyObj);

    if ($validator->fails()) {
        return response([
            'status' => false,
            'message'   => __('messages.validation_errors'),
            'errors' => $validator->errors()->all()
        ], 200);
    }

    DB::beginTransaction();

    try{

        $photoName = time().'.'.$request->image->getClientOriginalExtension();
        $request->image->move(public_path('profile_images'), $photoName);
        $path = asset('public/profile_images/'.$photoName);

        $this->user->where('id', Auth::user()->id)->update(['profile_pic' => $path]);
 

у меня есть два разных объекта в моем json, и я хочу загрузить изображение профиля пользователя, и я использую form-data и загружаю изображение [], но там написано undefined index user_profile, где я делаю неправильно?

Ваша помощь будет высоко оценена!

Комментарии:

1. Опубликуйте скриншот окна Postman, в котором вы выбираете изображение

2. я публикую снимок экрана, пожалуйста, смотрите

3. я также поделился снимком экрана с моими объектами тела json

Ответ №1:

Возможно, вам нужно преобразовать ваше изображение в данные base64, и вы можете использовать один пакет, чтобы упростить это.

Может быть, ваш код будет выглядеть так

 public function saveImage() {
    $data = Input::all();
    $image_url = "image-".time().".png";
    $image_path = public_path().'img/' . $image_url;

    Image::make(file_get_contents($data->base64_image))->save($image_path);     
    $response = array(
        'status' => 'success',
    );
    return Response::json( $response  );
 }
 

Фактический код из одного из моих проектов

  $base64Img = $request->input('image');  
 $name = time() . '.' . explode('/', explode(':', substr($base64Img, 0, strpos($base64Img, ';')))[1])[1];
 $path = public_path() . '/img/notices/' . $name;
 Image::make(file_get_contents($base64Img))->save($path);
 

Ваш код

 try{

        $base64Img = $request->input('image');  
 $photoName= time() . '.' . explode('/', explode(':', substr($base64Img, 0, strpos($base64Img, ';')))[1])[1];
        $path = asset('public/profile_images/'.$photoName);
        Image::make(file_get_contents($base64Img))->save($path);
        $this->user->where('id', Auth::user()->id)->update(['profile_pic' => $path]);
 

вместо $request->image->move() этого вам нужно использовать file_get_contents() .

и добавить

use InterventionImageImageManagerStatic as Image; в верхней части вашего контроллера.

Очень важно отправить правильное изображение в формате base64 в запросе

формат примера

 data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAFAAlgDASIAAhEBAxEB/8QAHQABAAICAwEBAAAAAAAAAAAAAAEIBgcEBQkCA//EAEIQAQABAwIDBAUIBwYHAAAAAAABAgMEBREGBxIIITGBE0FhcZEUFhgiQlFUlBUyUlWCkrEjU6Gio9IkM0NicrLR/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAwDAQACEQMRAD8AtCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImTcEiNzcEiNzcEiNzcEiNzcEiNzcEiNzcEiNzcEiNzcEiNzcEiNzcEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJCRQAAAAAAHC1vUsfRtHztSza jGxLNd 5P/bTEzP9FSa 1VxP1VdGh6L07928Xd9v5yi4Yp39Krin9x6J8Lv 8 lVxT 49E F3/eguIKd/Sq4p/ceifC7/vZZyr7RWq8U8d6XomuabpuLiZ1c2Yu4/XFUXJieiPrVTG0z3eYLMAKAAAAAAJgIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESEigAAAAADRva54p/QvLmjSLNfTk6xei1MRPf6Kjaqufj0x5qTNx9qnij5wc0snDs19WJpFuMOiI8OvxuT8Z2/hacQB9UUVXK6aKKZqrqnaKYjeZlzcnSNSxbNV3K07Ms2qfGu5YqppjzmAcByMHKvYObj5eLXNF xcpu26o8aaqZ3ifjD8AHpfwTrtnifhLSdax5jozcai7MR9mqY tT5Vbx5O7V27GvFEZ3Cmp8OX7n9tp1709mmfH0Vzx291UT/ADLEgAKAAAAJgIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESEigAAAA6XjXXbPDHCWra1kbdGDjV3oiftVRH1Y852jzd0rr2yuJ/kPCumcOWLm13Ub3p70RP/St ET76pj VBUbOy72dm5GXlVzXfv3KrtyufGqqqZmZ MuOANqdm 1h3eZuBGdawLk01W6rPyui5Vtc9JRtNvo8K/umr6v3ro8yqMW7wLrNGfRh3MWbH16cymuqzMbx tFH1pjfbw9agPLvjDP4I4pw9X0 7eppt3KPlFm3X0/KLUVRVVbmfunZcbn/wAfZHDPKuzn6ZTfs5mrxRax71u5FNWNNVPX1b vuiY7vvBRa9t6Svbbbedtn5vquqaqpqqneqZ3mXyDZnZ34ojhbmrpN69c6MPNq Q5G87R03O6mZ91XTK/7y3t11W66a6Jmmumd4mPGJejfKjiani/l9omsdUTevWIpv8Af4Xafq1/4xM YMtAUAAAATAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkJFAAAAB5/9ofin5081dXv2bnXiYdXyLHmJ3jpt90zHvq6p810 bHE1PCHL3W9Y6opvWbE0WO/xu1fVo/xmJ8nnHcrquV1V1zNVVU7zM Myg QAStv2qo25McJ y/Yj/QqVIjvW87V1MxyZ4Y9mVYj/QrBUIABarsX8U9VjWeFsiv9SYzsaJn1TtTciP8AJPnKqrNeTnFE8Icx9E1Wa5px6b0Wcj7ptV/Vq390Tv5A9FgpneN4nePVIoAAAAmAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARISKAAAIqmIiZmYiI75mfUCr3bQ4p6bOi8LY9ffVM52TET6o3ptxP efKFVma84 J6uL Y t6tTX1Y9V6bOP8AdFqj6tO3viN/NhSAACYnae53 u8Z8Sa/p9rB1rW8/Ow7VUV27N 7NVNMxG0TET7JmHQbAIEoASgB6E8g J/nZyt0bMu3OvLx7fyTImfHrt928  npnzbCVG7GXFHyXX9X4av3NrebajKsRP95R3VRHvpnf8AhW5AAUAATAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkJFAABrzn7xR80 Vus5lqvoy8ij5HjbePXc7t491PVPk2GqN2zeKPlXEOkcNWK97eFanKv0x/eV91MT7qY3/iQVuQADvOCeHcnizirTNCwaqaL bei1FdXfFEeNVU 6ImfJ0baXZnyreJzo4fm7EbXZu2qd/VVVbq2Bb7gHlTwpwVg27Wn6ZYyMyKdrmbk0Rcu3J9c7z rHsjaGU5Wg6Rl49djK0vBvWa42qorx6JiY9sbOyAVG7S3JrS GtK dPCtqcXEpu028vCiZmijqnaK6PujfaJj2xsrcvv2nMq1i8ltei743vQ2qP/KbtP8A8lQiQQADIeX/ABDc4U4z0fW7W/8AweRTXXEfao8K486ZmHpLi37WVjWcjHriuzeoi5RVHhVTMbxPweXS9/Zg4p cnKvBs3rnVmaVVOFd3nv6ae if5ZiPIG2wFAAEwECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJCRQAB WVkWsTFvZGRXFFmzRNyuqfCmmI3mfg82eP8AiC5xVxnrGt3pnfMyKrlET9mjfamPKmIhdDtP8U/NzlXnWLVzpzNVqjBtRE7T0z33J/liY84UQQQAAzjkniZGbzY4VtYcT6WM 3cmY9VNM9VU/CJYQs32MuEvTahq3FWTb3osR8ixZmPt1bTcmPdHTH8Ugs1xTr2n8MaBm6zq970ODiUekuVRG8z6oiI9czMxER7WuOVnPPQuYGv3dGs4eVp2dNM149N qmqL9Md87THhVEd 33b9747VmFl5vJ3PnDprqpx8izfvU0x424nafKJmJ8lXOzvhZedzj4bjBirexfm/dqj7Nummerf2THd5wCyva9xMjJ5S lx qbePn2bt6I/Y2qp3nzqhSKfF6acWaHjcScNalo2bH9hm2K7NU/s7x3THtidp8nmxremZGjaxm6bnUTRlYl6uxcp 6qmdp/oDggAN99kDij9E8f5GiX69sfV7O1ETPd6a3vVT8aeuPg0I7LhzVsjQdf07VsKqacjCv0X6JifGaZidvPwB6cjg6HqWPrOjYOp4dUVY2ZZov25j9mqImP6ucoAAmAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARISKAEgpd2v KP0tx/j6JYr3xtIsbVRE903rm1VXwp6I LQq et8guCNa1fN1PUbOo3szLu1Xrtc5lXfVVO8 6HC jdy9/Cah cqQUZF5vo3cvfwmofnKj6N3L38JqH5yoFGnoRyA0e1o3KHhuzbpiKr PGVcn76rk9f9JiPJjn0buXv4TUPzlTa g6XjaHouDpeD1xiYdmmxaiurqqimmNo3n190A5eRZt5Fm5Zv26Llm5TNFdFcb01RPdMTHrhj/CvBHDXCd7Ju8OaNiafdyf bXap tVHjtvPhHsjuZGAKNdrHRrel83MnIs0dNGo41rKnbw6  ir/wBN/NeVgHH3KThbjvWLWpcQ2sy7k2rMWKPRZE0UxTEzPhHtmQeeYvN9G7l7 E1D85UfRu5e/hNQ/OVAoymF5fo3cvfwmofnKj6N3L38JqH5yoHC7I/FH6a5cV6RfudWTo96bURM9/oq96qP8eqPJvJgnL/lXw1wDqGTmcOUZlq7k2vRXabuRNdNUb7x3T64 /2yzsABRMBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAbGwAbGwAbGwAbGwAbGwAbGwAbGwAbGwAbGwAbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9k=
 

формат будет выглядеть

 data:image/jpeg;base64,/   base64($image)
 

Комментарии:

1. это будет еще одна функция, которую я хочу сохранить для изображения в одной функции, как я поделился выше

2. @syed1234 почему вам нужно создать другую функцию, я привел пример кода, вы можете использовать его в своей собственной функции.

3. @syed1234 Я обновил свой ответ, пожалуйста, взгляните на него, примерно он будет похож на то, что я опубликовал.

4. вы использовали Image:make (но у меня не было никакой модели изображения. я сохраняю свое изображение в пользовательской модели?

5. @syed1234 Я упомянул один пакет intervention , который вам нужно установить, а затем использовать use InterventionImageImageManagerStatic as Image; поверх вашего контроллера.