Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Laravel使用PHP会话上载进度_Php_Session_Laravel_Upload_Progress - Fatal编程技术网

通过Laravel使用PHP会话上载进度

通过Laravel使用PHP会话上载进度,php,session,laravel,upload,progress,Php,Session,Laravel,Upload,Progress,我想在不使用第三方插件的情况下向用户展示上传进度,我知道PHP5.4能够通过会话报告上传进度。不幸的是,Laravel4.2不使用本机PHP会话,所以我如何才能让它工作呢 我尝试将session_start()放在所有相关页面(upload form页面、post页面和upload progress页面)的控制器方法的顶部。我使用的upload progress函数只是将会话作为json对象返回,但我在使用ajax时得到的是一个空对象。下面是一些代码: 在控制器中: public functio

我想在不使用第三方插件的情况下向用户展示上传进度,我知道PHP5.4能够通过会话报告上传进度。不幸的是,Laravel4.2不使用本机PHP会话,所以我如何才能让它工作呢

我尝试将session_start()放在所有相关页面(upload form页面、post页面和upload progress页面)的控制器方法的顶部。我使用的upload progress函数只是将会话作为json对象返回,但我在使用ajax时得到的是一个空对象。下面是一些代码:

在控制器中:

public function test(){
    session_start();
    return View::make('admin.test');
}

public function postTest(){
    session_start();
}
public function getTestProgress(){
    session_start();
    $key = ini_get("session.upload_progress.prefix") . "fileupload";
    return Response::json($_SESSION);
}
我的测试视图:

@extends('layouts.master')

@section('head')
<style type="text/css">
#barBlank {
  border: solid 1px #fff;
  height: 20px;
  width: 300px;
}

#barColor {
  background-color: yellow;
  height: 20px;
  width: 0px;
}

#barBlank, #hiddenUploadIframe {
  display: none;
}
</style>
@stop

@section('header')
@stop

@section('content')

<div id="barBlank">
   <div id="barColor"></div>
</div>
<div id="status"></div>
{{ Form::open( ['action' => 'MyController@postTest', 'id' => 'fileUpload', 'files' => true, 'target'=>'hiddenUploadIframe'] ) }}
<input type="hidden" value="fileupload" name="{{ ini_get('session.upload_progress.name') }}">
<input type="file" name="userfile"><br>
<input type="submit" value="Start Upload">
{{ Form::close() }}
<iframe id="hiddenUploadIframe" name="hiddenUploadIframe" src="about:blank"></iframe>

@stop

@section('footer')
@stop

@section('footerjs')
<script type="text/javascript">

function sendRequest(){
  $.get("{{ action('MyController@getTestProgress') }}", function(data){
    console.log(data);
    var progress = data.upload_progress_fileupload;
    var percent = Math.round((progress.bytes_processed / progress.content_length)*100);
    $('#barColor').width(percent+'%');
    $('#status').html(percent+'%');
    if( percent < 100 ){
      setTimeout(sendRequest(), 100);
    }
    else{
      $('#barBlank').hide();
      $('#status').html('Done.');
    }
  });
}

$('#fileUpload').submit(function(){
  $('#barBlank').css('display', 'block');
    setTimeout(sendRequest(), 100);
})

</script>
@stop
@extends('layouts.master'))
@第节(“标题”)
#杠铃{
边框:实心1px#fff;
高度:20px;
宽度:300px;
}
#巴色{
背景颜色:黄色;
高度:20px;
宽度:0px;
}
#barBlank,#hiddenUploadIframe{
显示:无;
}
@停止
@节(“标题”)
@停止
@节(“内容”)
{{Form::open(['action'=>'MyController@postTest“,”id'=>”fileUpload“,”files'=>true,“target'=>”hiddenhuploadiframe'])}

{{Form::close()}} @停止 @节(“页脚”) @停止 @节('footerjs') 函数sendRequest(){ $.get(“{{action('MyController@getTestProgress“)}”,函数(数据){ 控制台日志(数据); var progress=data.upload\u progress\u fileupload; 变量百分比=数学轮((progress.bytes\u processed/progress.content\u length)*100); $('#barColor')。宽度(百分比+'%”); $('#status').html(百分比+'%'); 如果(百分比<100){ setTimeout(sendRequest(),100); } 否则{ $('#barBlank').hide(); $('#status').html('Done'); } }); } $('#fileUpload')。提交(函数(){ $('#barBlank').css('display','block'); setTimeout(sendRequest(),100); }) @停止
您可以使用jquery ajax并节省时间。