使用plupload处理程序php示例在分块的plupload上请求实体过大错误


Request Entity Too Large error on chunked plupload with plupload-handler-php example

我要拔头发了。在php后端使用plupload和分块。在我使用大于100mb的文件之前,分块(或非分块)都很好。

我希望能够使用1Gb之前的文件。继续获取错误,然后重试再次生效,百分比为0%,然后重新启动。也没有飞行前OPTION请求。我甚至使用node-pulploader制作了一个快速的NodeJS后端,它处理块,但也有同样的问题和错误(尽管它确实发送了preflight OPTION)。

如有任何建议,将不胜感激

附加Apache指令

LimitRequestBody 0

PHP设置

file_uploads          On
max_file_uploads          20
max_execution_time          3600
memory_limit          640M
post_max_size          600M
upload_max_filesize          500M

js

var uploader = new plupload.Uploader({
    runtimes : 'html5,silverlight,html4',
    browse_button : 'pickfiles',
    url : '<?php echo SITE_URL; ?>admin?sub=upload',
    silverlight_xap_url : '<?php echo SITE_URL; ?>lib/Moxie.xap',
    multi_selection : false,
    max_retries: 10,
    filters : {
        max_file_size : '1024mb',
        chunk_size: '10mb',
    },
    init: {
        FilesAdded: function(up, files) {
            plupload.each(files, function(file) {
                $('#document-file').html(file.name);
            });
        },
        UploadProgress: function(up, file) {
            $('#spinner-progress').html( " " + file.percent + "%" );
        },
        Error: function(up, err) {
            console.warn("Error #" + err.code + ": " + err.message);
        },
        UploadComplete: function(up, files) {
            console.log(files[0]);
        }
    }
});
uploader.init();

上传器后端

<?php
require_once(LIB.SLASH."PluploadHandler.php");
PluploadHandler::no_cache_headers();
PluploadHandler::cors_headers();
if (!PluploadHandler::handle(array(
    'tmp_dir' => UPL_TMP_PATH,
    'target_dir' => UPL_TMP_PATH
))) {
    die(json_encode(array(
        'OK' => 0,
        'error' => array(
            'code' => PluploadHandler::get_error_code(),
            'message' => PluploadHandler::get_error_message()
        )
    )));
} else {
    die(json_encode(array('OK' => 1)));
}

我使用的是一个未更改的plupload处理程序php示例

原来是ngnix配置中的强制设置。client_max_body_size被Plesk默认模板(default/domain/nginxDomainVirtualHost.php)强制设置为128m。在否决此设置时,Plesk返回了一个"重复"错误,最终我得到了这个答案。制作一个自定义模板,更新vhosts。问题解决了!