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);