2016-12-01 66 views
1

我是新来的laravel 5和PHP,所以我不明白为什么我得到这个问题。文件上传返回空结果

我想使用ajax上传文件(视频或图像),但服务器返回空结果。即使当我调节FormData时,表单看起来也是空的。

HTML

<form enctype="multipart/form-data" id="upload-file" role="form" method="POST" action="" > 
    <input type="hidden" name="_token" value="{{ csrf_token()}}"> 
    <input type="file" class="form-control" id="catagry-logo" name="videologo"> 
</form> 
<div id="video-submit">Submit</div> 

的Javascript

$.ajaxSetup({ 
    headers: { 
      'X-CSRF-Token': $('meta[name=_token]').attr('content') 
    } 
}); 

$('#video-submit').on('click', function() { 
    console.log(new FormData($("#upload-file")[0])); 
    $.ajax({ 
      type:'post', 
      url:'uploadvideo', 
      data: new FormData($("#upload_form")[0]), 
      processData: false, 
      contentType: false, 
      success:function(response){ 
       console.log(response); 
      } 
    }); 
}); 

路线

Route::post('/uploadvideo', '[email protected]'); 

控制器

public function videoUpload() { 
    return response()->json(json_encode(Input::all())); 
} 

响应

FormData {} 
[] 
+0

使用请求类'公共函数videoUpload(请求$请求)'然后使用'dd($ request-> input('videologo'))' – MiSAKACHi

+0

为什么你的action =“”为空? –

+0

这意味着POST到自我 – MiSAKACHi

回答

0

看来你正在使用的Input门面

尝试使用Request

而且,你正在返回的JSON响应似乎是错误的方式熟悉自己,所以试试这个。

注意

确保在您的INI文件中的PHP帖子上传大小可以处理您上传的文件大小或您将结束与空白POST请求

在您php.ini文件设置以下指令以适应您的上传

  • post_max_size =(以MB为单位的大小,POST请求的总大小)
  • upload_max_filesize =(尺寸以MB,在POST请求中的单个文件的大小)

控制器

use Illuminate\Http\Requests; 

public function videoUpload(Request $request) { 
    return response()->json(['video' => $request->input('videologo')]); 
} 
+0

感谢您的回复。现在我得到一个空数据,我的测试文件大小只有35KB,仍然不能返回正确的数据 –

+0

你应该真的尝试发布一个字符串,看看它是否返回你发布的确切字符串。 – MiSAKACHi

+0

我已经将数据传递给了像string和int这样的控制器。 –