Laravel ajax图片上传'移动'功能创建500错误

时间:2017-06-19 05:46:14

标签: php ajax laravel move

我正在尝试使用Laravel 5.4进行AJAX图像上传。我的表单中的所有其他字段都在工作,但文件输入上的move()函数除外,它返回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 OF $ _FILES [&#39; image&#39;]

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文件夹确实存在。

2 个答案:

答案 0 :(得分:2)

您获得了什么错误,可能与“uploads”文件夹的权限有关?

检查Laravel日志上的500错误详细信息。

您还可以在chrome Dev工具中查看错误详细信息。转到“网络”标签,按“XHR”过滤,点击应以红色突出显示的500错误,然后在顶部菜单中更改为“预览”标签。这应该给你详细的服务器错误。

答案 1 :(得分:1)

尝试上传图片:

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