【发布时间】:2020-01-08 02:45:02
【问题描述】:
我正在尝试在我的 Laravel 项目中使用 AJAX 上传带有图像的表单。但是我遇到了错误
在字符串上调用成员函数 getClientOriginalExtension()
我找不到解决办法。
html 表单
<form id="edit_form" enctype="multipart/form-data">
<input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />
<div class="form-group">
<label>Image</label>
<input id="edit_form_image" type="file" class="form-control" name="user_image">
</div><!-- end form-group -->
<div class="form-group">
<label>Name</label>
<input id="edit_form_name" type="text" class="form-control" value="{{Auth::user()->name}}">
</div><!-- end form-group -->
<div class="form-group">
<label>Profession</label>
<input id="edit_form_profession" type="text" class="form-control" value="{{Auth::user()->profession}}">
</div><!-- end form-group -->
<button type="button" id="edit_form_submit" class="btn btn-orange">Save Changes</button>
ajax 部分
$('#signin_button').click(function(event) {
var edit_form_image = $('#edit_form_image').val();
var edit_form_name = $('#edit_form_name').val();
var edit_form_profession = $('#edit_form_profession').val();
$.ajax({
url:"{{ url('/profile-update') }}",
data: {image: edit_form_image, name: edit_form_name, profession: edit_foredit_form_professionm_email, _token: token},
dataType:'json',
async:false,
type: 'POST',
processData: false,
contentType: false,
success:function(msg)
{
console.log(msg);
}
});
});
控制器
public function profile_update()
{
$this->validate(request(), [
'name' => 'required',
'profession' => 'required'
]);
$imageName = time().'.'.request('image')->getClientOriginalExtension();
request()->image->move(public_path('images'), $imageName);
$user = Auth::user();
$user->name = request('name');
$user->profession = request('profession');
$user->avatar = $imageName;
$user->save();
return '1';
}
问题出在哪里以及如何解决?
有人帮忙吗?
【问题讨论】:
-
向我们展示您的完整控制器。
-
你必须改用表单数据
-
@SalmanZafar...而不是什么兄弟...你能解释一下吗?
-
只有使用 ajax 和 FormData 才能传递图像。 Multipart/form-data 不适用于 AJAX
-
@Script47...我已经用控制器更新了我的鳕鱼
标签: php html ajax laravel image-upload