如何在邮递员中上传图片-使用laravel

时间:2019-04-16 07:14:37

标签: php json laravel image

enter image description here enter image description here我正在尝试在邮递员中上传图片,我的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中有两个不同的对象,我想上传用户个人资料图片,并且我正在使用表单数据并上传image [],但它表示未定义索引user_profile,我在哪里做错了?

我们将非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

也许您需要将图像转换为base64数据,并且您可能希望使用一个package来简化它。

也许您的代码看起来像

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 Intervention\Image\ImageManagerStatic as Image;位于控制器顶部。

在请求中发送正确的base64格式的图像非常重要

示例格式为

data:image/jpeg;base64,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

格式将类似于

data:image/jpeg;base64,/ + base64($image)
相关问题