dacuan
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Столкнулся со странной проблемой. При аплоаде больших файлов на медленном канале через некоторое время обрывается соединение. Но самое странное то, что после обрыва закачанная часть файла передается скрипту, как-будто все прошло нормально. С точки зрения скрипта это выглядит так: Код: name: Universal_Report_Setup.exe type: application/x-msdownload tmp_name: /tmp/phptxsbGn error: 0 size: 5081960 | В поле size размер загруженной части файла (полностью он превышает 10М). Причем при загрузке файла на быстром канале все происходит нормально. На сервере стоит: ОС: Fedora Core 4 Apache 2.0.54 PHP 4.3.11 Параметры php.ini: Код: file_uploads = On upload_max_filesize = 60M upload_tmp_dir = /tmp | Минимальный код, повторяющий ошибку: Код: <?php if ( $_SERVER["REQUEST_METHOD"] == "POST" ) { $str = ""; foreach ( $_FILES["testfile"] as $cur_key => $cur_val ) { $str .= $cur_key.": ".$cur_val."\r\n"; } $fname = "./".$_FILES["testfile"]["name"]; if ( !move_uploaded_file($_FILES["testfile"]["tmp_name"], $fname) ) { $str .= "Copying file error\r\n"; } if ( ($size = filesize($_FILES["testfile"]["tmp_name"])) != $_FILES["testfile"]["size"] ) { $str .= "Filesize error (Uploaded: ".$size.")\r\n"; } if ( $fp = fopen("out.log", "ab") ) { fwrite($fp, $str); fwrite($fp, "\r\n\r\n"); fclose($fp); echo "Save done<br>"; } else { echo "error<br>"; } } ?> <form enctype="multipart/form-data" action="" method="post"> Send this file: <input name="testfile" type="file"> <input type="submit" value="Send File"> </form> | В идеале было бы хорошо найти способ не рвать соединение. Но будет достаточно идентифицировать ошибку и предупреждать о ней пользователя. PS В качестве крайнего метода остается возможность использовать FTP, но очень не хочется к этому прибегать. |