【问题标题】:Laravel ajax image upload 'move' function creating 500 errorLaravel ajax 图片上传“移动”功能创建 500 错误
【发布时间】:2017-06-19 05:46:14
【问题描述】:

我正在尝试使用 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['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)
}

上传文件夹确实存在。

【问题讨论】:

  • 您是否在public 目录下创建了uploads 文件夹??

标签: php ajax laravel move


【解决方案1】:

您遇到什么错误,可能与“上传”文件夹的权限有关?

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

您还可以在 chrome 开发工具中查看错误详情。转到“网络”选项卡,按“XHR”过滤,单击应以红色突出显示的 500 错误,然后在顶部菜单上更改为“预览”选项卡。这应该会给你详细的服务器错误。

【讨论】:

  • 这是我收到的错误Call to a member function move() on array
【解决方案2】:

尝试像这样上传图片:

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

【讨论】:

  • 工作,奇怪的是,当我尝试访问 $request-&gt;file('image) 之前它没有工作。
猜你喜欢
  • 2017-08-26
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2014-05-18
  • 2018-03-14
相关资源
最近更新 更多