图片必须是图像,并且文件类型:jpg,jpeg。即使我正在上传有效的jpg或jpeg文件,我也会收到这些错误消息。我正在尝试实现用户个人资料图片的更新,该列已经存在,但是只要他们登录,该列就可以为空。
现在,我正在尝试更新个人资料图片字段和其他一些字段。其他字段也在工作,但是当我尝试更新图像时,也会收到错误消息,例如“图片必须是图片”或“图片必须是类型为jpg,jpeg的文件”。
最初,我使用jquery onChange方法在文件更改时获取文件输入,然后使用this.value.replace(/^C:\\fakepath\\/i, '')
对其进行修整,然后将该修整后的值作为数据传递给我的ajax函数
修剪文件输入,最初它是空的。但是我会在文件更改时对其进行修剪
var path = '';
$('.file').on("change", function(){
path = this.value.replace(/^C:\\fakepath\\/i, '');
$('#fake_btn').text(path);
});
然后将其传递给我的ajax
$.ajax({
async: true,
url: "/user/update_profile",
method: 'POST',
data: { picture:path,about: $('#about').val(),fb: $('#facebook').val(),tw: $('#twitter').val(),ln: $('#linkendin').val() },
success:function(data){
if(data['errors']){
const ex = data.errors;
$('.warning').html('');
$('.alert-message').hide();
$.each(ex,function(key,value){
$('.alert-message').show();
$('.warning').append('<p>'+value+'</p>');
});
}else{
$('.warning').html('');
$('.alert-message').hide();
$('.alert-success').fadeIn();
$('.success').html(data.message);
}
$('#update-profile').html('Update');
$('#update-profile').hide();
$('#loader-icon').fadeOut();
}
});
这是我的控制器的样子
public function update(Request $request){
$image = "";
$attribute = Validator::make($request->all(),[
'picture' => 'image|mimes:jpg,jpeg|max:2048|nullable',
'about' => 'min:20',
'fb' => 'min:20|nullable',
'tw' => 'min:20|nullable',
'ln' => 'min:20|nullable'
]);
if($attribute->fails()){
$error = array('errors'=>$attribute->errors());
return Response()->json($error);
}
if(empty($request->picture)){
$image = 'Null';
}else{
$image = $request->picture;
$image = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('user_images'), $image);
}
$user = User::find(Auth::user()->id);
$user->about = $request->about;
$user->image = $image;
$user->save();
$fb = empty($request->fb) ? 'Null' : $request->fb;
$tw = empty($request->tw) ? 'Null' : $request->tw;
$ln = empty($request->ln) ? 'Null' : $request->ln;
$userSocialExist = Social::usersocialExist(Auth::user()->id);
if($userSocialExist){
$social = Social::where([
['user_id', Auth::user()->id]
])->update(['facebook' => $fb,'twitter' => $tw,'linkendin'=>$ln]);
$data = array('message'=>'social updated!');
return Response()->json($data);
}else{
$social = new Social();
$social->user_id = Auth::user()->id;
$social->facebook = $fb;
$social->twitter = $tw;
$social->linkendin = $ln;
$social->save();
$data = array('message'=>'social created!');
return Response()->json($data);
}
请注意,我在同一页面上更新用户的社交媒体链接,但是仅在更新他们的社交媒体链接时,它会很好地工作。仅在尝试更新图像时,我会收到这些错误消息。