X-Git-Url: https://git.p6c8.net/jirafeau_project.git/blobdiff_plain/2cca8753a5d894f285a3dfbbac7bb7f76baf3cf9..b6f423726c6f71c769fc7d7f3b842f623595a808:/lib/functions.js.php diff --git a/lib/functions.js.php b/lib/functions.js.php index 1527d01..ced2fa7 100644 --- a/lib/functions.js.php +++ b/lib/functions.js.php @@ -494,7 +494,16 @@ function async_upload_push (code) { var res = req.responseText; - if (/^Error/.test(res)) + // This error may be triggered when Jirafeau does not receive any file in POST. + // This may be due to bad php configuration where post_max_size is too low + // comparing to upload_max_filesize. Let's retry with lower file size. + if (res === "Error 23") + { + async_global_max_size = Math.max(1, async_global_max_size - 500); + async_upload_push (async_global_last_code); + return; + } + else if (/^Error/.test(res)) { pop_failure (res); return; @@ -504,15 +513,17 @@ function async_upload_push (code) var code = res[0] async_global_transfered = async_global_transfering; async_upload_push (code); + return; } else { if (req.status == 413) // Request Entity Too Large { // lower async_global_max_size and retry - async_global_max_size = parseInt (async_global_max_size * 0.8); + async_global_max_size = Math.max(1, parseInt (async_global_max_size * 0.8)); } async_upload_push (async_global_last_code); + return; } } } @@ -577,8 +588,7 @@ function upload (max_size) { var one_time_checkbox = document.getElementById('one_time_download'); var one_time = one_time_checkbox !== null ? one_time_checkbox.checked : false; - if (check_html5_file_api () - && document.getElementById('file_select').files[0].size >= max_size) + if (check_html5_file_api ()) { async_upload_start ( max_size,