2017-06-19 46 views
0

我想用Laravel 5.4做一个AJAX图像上传。除了文件输入上的move()函数外,我的表单中的所有其他字段都正在工作,这会返回500错误。我添加了与下图相关的所有代码。当点击提交按钮时,我正在做e.preventDefault(),然后启动ajax功能。

HTMLLaravel ajax图像上传“移动”功能创建500错误

{!! Form::open(['action' => '[email protected]','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); 
} 

$ _FILES [ '形象']所示的var_dump

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

上传文件夹确实存在。

+0

您是否制作在'public'目录'uploads'文件夹? –

回答

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

工作,奇怪的是,当我试图访问'$ request->文件('图像)'之前,它不工作。 – AJDEV

1

你得到什么错误,可能是与'上传'文件夹的权限有关的东西?

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

您还可以查看chrome Dev工具中的错误详细信息。进入'网络'选项卡,按'XHR'过滤,点击应该以红色突出显示的500错误,然后在顶部菜单中切换到'预览'选项卡。这应该给你详细的服务器错误。这样

+0

这是我正在调用成员函数移动()阵列上的错误 – AJDEV