响应文件管理器和TinyMCE

问题描述 投票:0回答:1

我在Laravel v 6应用程序中使用tinyMCE v 5的Responsive File Manager 9.14.0-我按照教程进行了设置。除了单击“开始上传”按钮之外,其他所有操作都正常-我收到此错误:意外令牌这显示在我得到的php错误日志的后端页面中这两个错误。

[05-Mar-2020 12:08:17 Europe/Rome] PHP Notice: Trying to access array offset on value of type null in /var/www/html/laratest/public/tinymce/filemanager/UploadHandler.php on line 496

[05-Mar-2020 12:08:17 Europe/Rome] PHP Notice: Trying to access array offset on value of type null in /var/www/html/laratest/public/tinymce/filemanager/UploadHandler.php on line 1429.

奇怪的是,大文件不会发生该错误。同样奇怪的是,即使给出了此错误,它仍然可以下载文件。这是我的tinymce配置

tinymce.init({
    selector: 'textarea',
    plugins: 'image code a11ychecker advcode casechange formatpainter linkchecker lists checklist media mediaembed pageembed permanentpen powerpaste table advtable tinymcespellchecker',
    toolbar: ' link image casechange checklist code formatpainter pageembed permanentpen table',
    image_title: true, 
    automatic_uploads: true,
    file_picker_types: 'image',
    external_filemanager_path:"{{url('tinymce/filemanager')}}/",
            filemanager_title:"Responsive Filemanager" ,
            external_plugins: { "filemanager" : "{{url('tinymce')}}/filemanager/plugin.min.js"},

  });
laravel tinymce responsive-filemanager
1个回答
0
投票

问题出在文件UploadHandler.php的第496行和1429行上]

///////////////////////////////////////////////// /////////////////////////////////

第496行周围的代码

///////////////////////////////////////////////// ///////////////////////////////

  protected function get_unique_filename($file_path, $name, $size, $type, $err

    or,
            $index, $content_range) {
        while(is_dir($this->get_upload_path($name))) {
            $name = $this->upcount_name($name);
        }
        // Keep an existing filename if this is part of a chunked upload:
        //BELOW is line 496
        $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]);
        while (is_file($this->get_upload_path($name))) {
            if ($uploaded_bytes === $this->get_file_size(
                    $this->get_upload_path($name))) {
                break;
            }
            $name = $this->upcount_name($name);
        }
        return $name;
    }

///////////////////////////////////////////////// /////////////////////////////////

以及第1429行周围的代码

///////////////////////////////////////////////// ////////////////////////////////

$response = array($this->options['param_name'] => $files);
$name = $file_name ? $file_name : $upload['name'][0];
$res = $this->generate_response($response, $print_response);
if(is_file($this->get_upload_path($name))){
// BELOW IS LINE 1429
    $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]);
    $totalSize = $this->get_file_size($this->get_upload_path($name));
    if ($totalSize - $uploaded_bytes - $this->options['readfile_chunk_size'] < 0) {
        $this->onUploadEnd($res);
    }else{
        $this->head();
        $this->body(json_encode($res));
    }
}else{
    $this->head();
    $this->body(json_encode($res));
}

问题在于当未分块上传的文件时,$ content_range [1]的值。需要检查$ content_range [1]的值以查看是否设置了该值。

下面是引发错误的两个代码摘录的解决方案。首先是第496行的代码

   protected function get_unique_filename($file_path, $name, $size, $type, $error,
            $index, $content_range) {
        while(is_dir($this->get_upload_path($name))) {
            $name = $this->upcount_name($name);
        }
        // Keep an existing filename if this is part of a chunked upload:  
        if(isset($content_range[1])){
             $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]);
        }

        while (is_file($this->get_upload_path($name))) {
            if(isset($uploaded_bytes)){
            if ($uploaded_bytes === $this->get_file_size(
                    $this->get_upload_path($name))) {
                break;
            }
            }
            $name = $this->upcount_name($name);
        }

        return $name;
    }

以及1429年左右的第二个位代码。

$response = array($this->options['param_name'] => $files);
$name = $file_name ? $file_name : $upload['name'][0];
$res = $this->generate_response($response, $print_response);
if(is_file($this->get_upload_path($name))){
    if(isset($content_range[1])){
     $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]);
    }
    else{
     $uploaded_bytes = 0;
    }
    $totalSize = $this->get_file_size($this->get_upload_path($name));


    if ($totalSize - $uploaded_bytes - $this->options['readfile_chunk_size'] < 0) {

           $this->onUploadEnd($res);

    }else{
        $this->head();
        $this->body(json_encode($res));
    }
}else{
    $this->head();
    $this->body(json_encode($res));
}
return $res;
© www.soinside.com 2019 - 2024. All rights reserved.