图像文件是使用ajax的空laravel

时间:2018-01-30 20:37:51

标签: php jquery ajax laravel

我有桌面用户:

  • ID
  • 的firstName
  • lastName的
  • 登录
  • 密码
  • image null

在将所有输入添加到数据库时,它可以很好地工作。

当插入i时不会插入图像我只会插入firstName,lastName,login,password和image我想指定一个null。

但它不起作用它向我显示 toastr.error('','错误!'); ,知道我删除输入图像中所需的内容。

我尝试使用此代码:

控制器:

public function addUser(Request $request){
        $user = new User();
        $user->firstName = $request->firstName;
        $user->lastName = $request->lastName;
        $user->login = $request->login;
        $user->password = bcrypt($request->password);
        if(empty($request->image)){

            $user->image = NULL;

           } else{
                $custom_file_name = $request->image->getClientOriginalName();
                $path = $request->image->storeAs('avatars',$custom_file_name);
                $user->image = $path;
            }
        $user->save();
        return response()->json($user);   
    }

Ajax:

$(document).on('click', "#add", function() {

            var firstName = $('#firstName').val();
            var lastName = $('#lastName').val();
            var login = $('#login').val();
            var password = $('#password').val();
            var image  = $('#image').prop('files')[0];

            var form_data = new FormData();

            form_data.append('firstName', firstName);
            form_data.append('lastName', lastName);
            form_data.append('login', login);
            form_data.append('password', password);
            form_data.append('image', image);

                    $.ajax({
                      url: "{{action('UserController@addUser')}}",
                      method: 'POST',
                      data:form_data,
                      contentType: false,
                      processData: false,
                      success: function(data) {


                        toastr.success('', 'Success!');
                      },

                      error: function(){
                          toastr.error('', 'Error!');
                      }
                    });

查看:

<form enctype="multipart/form-data">
 {{ csrf_field() }}
   <div class="form-group">
    <input type="text" id="lastName" autocomplete="off" class="form-control" />
   </div>
   <div class="form-group">
    <input type="text" id="firstName" autocomplete="off" class="form-control" />
   </div>
   <div class="form-group">
    <input type="text" id="login" autocomplete="off" class="form-control" />
   </div>
   <div class="form-group">
    <input type="password" id="password" autocomplete="off" class="form-control" />
   </div>
   <div class="form-group">
    <input type="file" id="image" name="image" autocomplete="off" class="form-control" />
   </div>
</form>
<button type="submit" id="add" class="btn default">Add</button>

2 个答案:

答案 0 :(得分:2)

可能需要将列设置为可空(在迁移文件中),以便在该列中保存空值。

例如:

$table->string('email')->nullable();

或在你的情况下:

$table->string('image')->nullable();

答案 1 :(得分:1)

试试此代码

    if($request->hasFile('image')) {
            $file = $request->file('image');

            $name = $request['phone_number'].$request['phone_number'].'.'.$file->getClientOriginalExtension();

            $image['filePath'] = $name;
            $file->move('uploads', $name);

        }