微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel上传进度栏无法正常工作

如何解决Laravel上传进度栏无法正常工作

我使用Maatwebsite在Laravel-5.8中有Excel Upload

控制器

public function import(Request $request){
    $request->validate([
        'file' => 'required|max:10000|mimes:xlsx,xls',]);

  $path1 = $request->file('file')->store('temp'); 
 $path=storage_path('app').'/'.$path1;  

    try{

        Excel::import(new LeavesImport,$path);           
        
    } catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
        $failures = $e->failures();
        Log::error($e);
        $errormessage = "";
        
     foreach ($failures as $failure) {
         $errormess = "";
         foreach($failure->errors() as $error)
         {
             $errormess = $errormess.$error;
         }
         $errormessage = $errormessage.",\n At Row ".$failure->row().",".$errormess."<br>";
     }
         Session::flash('error',$errormessage);
         return back();            
    }catch (\Illuminate\Database\QueryException $e)
    {
        $errorCode = $e->errorInfo[1];
        if($errorCode == 1062){
        Log::error($e);
        DB::rollback();
        Session::flash('error','You have a duplicate entry problem!');
        }
        return back();

    }        
    Session::flash('success','Records Imported Successfully');
    return redirect()->route('imports.index');       
}

在我使用jquery-form.js添加Laravel文件上传进度栏之前,一切都运行良好。如果有重复或其他错误,则表明存在该错误,并且不会上传。如果没有问题,则说明上传成功,并指示上传成功。

在这里添加上传进度栏

import.blade

                            <form action="{{route('employee.import')}}" method="POST" enctype="multipart/form-data">  
                                @csrf
                             <div class="modal-body">   
                                <div class="custom-file">
                                    <input type="file" name="file" class="custom-file-input" id="customFile" required="required">
                                    <label class="custom-file-label" for="exampleInputFile">Choose Excel File: .xlsx,.xls</label>
                                </div><br/><br/>
                                <div class="progress">
                                    <div class="bar"></div >
                                    <div class="percent">0%</div >
                                </div>
                            </div>
                            <div class="modal-footer">
                                <button type="submit" class="btn btn-primary">Upload</button>
                            </div>
                        </form>

JavaScript:

<script type="text/javascript">
    $(function() {
         $(document).ready(function()
         {
            var bar = $('.bar');
            var percent = $('.percent');

      $('form').ajaxForm({
        beforeSend: function() {
            var percentVal = '0%';
            bar.width(percentVal)
            percent.html(percentVal);
        },uploadProgress: function(event,position,total,percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal)
            percent.html(percentVal);
        },complete: function(xhr) {
            alert('File Uploaded Successfully');
            window.location.href = "{{ route('imports.index') }}";               
        }
      });
   }); 
 });
</script> 

现在的问题是,即使出现故障,进度条也会显示100%并显示成功。故障警报和重复警报不再显示

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。