Laravel ajax 图片上传 'move' 函数创建 500 错误
Laravel ajax image upload 'move' function creating 500 error
我正在尝试使用 Laravel 5.4 上传 AJAX 图片。除了文件输入上的 move()
函数,我表单中的所有其他字段都在工作,returns 出现 500 错误。我已经添加了与下图相关的所有代码。单击提交按钮后,我正在执行 e.preventDefault()
,然后启动 ajax 函数。
HTML
{!! Form::open(['action' => 'ProjectController@store','id' => 'createForm','files' => true]) !!}
<div class="form-group">
{!! Form::label('image', 'Project Image') !!}
{!! Form::file('image') !!}
</div>
{!! Form::submit('Create', ['id' => 'createSubmit', 'class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
AJAX
var formData = new FormData($('#formElem'));
$.ajax({
url: '{{ route('project.store') }}',
type: 'post',
contentType: false,
processData: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: formData,
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
console.log(data);
}
});
PHP
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
$image_filename = 'feature-' . $image['name'];
// THIS LINE CAUSES THE 500 ERROR
// $image->move(public_path('uploads'), $image_filename);
}
VAR_DUMP 个 $_FILES['image']
array(5) {
["name"]=>
string(12) "Homepage.png"
["type"]=>
string(9) "image/png"
["tmp_name"]=>
string(23) "C:\xampp\tmp\php7AD.tmp"
["error"]=>
int(0)
["size"]=>
int(251159)
}
上传文件夹确实存在。
你遇到了什么错误,可能与 'uploads' 文件夹的权限有关?
检查 Laravel 日志中的 500 错误详细信息。
您还可以在 chrome 开发工具中查看错误详细信息。转到 'Network' 选项卡,按 'XHR' 筛选,单击应以红色突出显示的 500 错误,然后在顶部菜单上更改为 'preview' 选项卡。那应该给你详细的服务器错误。
尝试像这样上传图片:
$destinationPath = 'path/th/save/file/';
$image = $request->file('image');
$name = $user_meta['image_org_name'] = $image->getClientOriginalName();
$extension = $image->getClientOriginalExtension();
$file_name = md5(uniqid().time()).'_'.$user_meta['image_org_name'];
$image->move($destinationPath,$file_name);
我正在尝试使用 Laravel 5.4 上传 AJAX 图片。除了文件输入上的 move()
函数,我表单中的所有其他字段都在工作,returns 出现 500 错误。我已经添加了与下图相关的所有代码。单击提交按钮后,我正在执行 e.preventDefault()
,然后启动 ajax 函数。
HTML
{!! Form::open(['action' => 'ProjectController@store','id' => 'createForm','files' => true]) !!}
<div class="form-group">
{!! Form::label('image', 'Project Image') !!}
{!! Form::file('image') !!}
</div>
{!! Form::submit('Create', ['id' => 'createSubmit', 'class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
AJAX
var formData = new FormData($('#formElem'));
$.ajax({
url: '{{ route('project.store') }}',
type: 'post',
contentType: false,
processData: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: formData,
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
console.log(data);
}
});
PHP
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
$image_filename = 'feature-' . $image['name'];
// THIS LINE CAUSES THE 500 ERROR
// $image->move(public_path('uploads'), $image_filename);
}
VAR_DUMP 个 $_FILES['image']
array(5) {
["name"]=>
string(12) "Homepage.png"
["type"]=>
string(9) "image/png"
["tmp_name"]=>
string(23) "C:\xampp\tmp\php7AD.tmp"
["error"]=>
int(0)
["size"]=>
int(251159)
}
上传文件夹确实存在。
你遇到了什么错误,可能与 'uploads' 文件夹的权限有关?
检查 Laravel 日志中的 500 错误详细信息。
您还可以在 chrome 开发工具中查看错误详细信息。转到 'Network' 选项卡,按 'XHR' 筛选,单击应以红色突出显示的 500 错误,然后在顶部菜单上更改为 'preview' 选项卡。那应该给你详细的服务器错误。
尝试像这样上传图片:
$destinationPath = 'path/th/save/file/';
$image = $request->file('image');
$name = $user_meta['image_org_name'] = $image->getClientOriginalName();
$extension = $image->getClientOriginalExtension();
$file_name = md5(uniqid().time()).'_'.$user_meta['image_org_name'];
$image->move($destinationPath,$file_name);