Почему не все файлы xls переданные методом POST обрабатываются плагином PHPSpreadsheet?

274
06 января 2018, 03:57

Поставил плагин PHPOffice/PHPSpreadsheet и пробую читать файлы екселя (xls, xlsx). Если кинуть файл на сервер и считать его, то всё нормально, его содержимое выводится при помощи echo. Но если я отправляю этот файл методом POST то он приходит, но его содержимое не выводится. Хотя если совсем обрезать файл, и оставить около 10 строк, тогда после передачи его содержимое выводится.

Фронтенд на reactJS. Вот код отправки файла:

        addFileSubmit() {
            var data = new FormData();
            data.append('act', 'INPUTFILEROLL');
            data.append('connectid', cookies.get('connectid'));
            data.append('token', cookies.get('token'));
            data.append('file', this.state.file_data);
            $.ajax({
                url: 'http://****/***.php',
                type: 'POST',
                dataType: 'json',
                data: data,
                processData: false,
                contentType: false,
                success: function (data) {
                    this.setState({
                        datauploaded: true,
                        response: 'gespeichert',
                        error: 1
                    });
                }.bind(this),
            });
        }

А вот часть кода, которая обрабатывает принятый файл:

            var_dump($_FILES);
            $fname = $_FILES['file']['name'];
            echo 'NAME: ' . $fname;
            $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($fname);
            $sheet = $spreadsheet->getActiveSheet();
            $rows = $sheet->toArray();
            foreach ($rows AS $r) {
                echo '-----------------------------------------------<br/>';
                foreach ($r AS $c) {
                    echo '[' . $c . ']';
                }
                echo '<br/>';
            }

Почему файлы с большим количеством строк не обрабатываются при передачи файла методом POST, но если считывать прямо с сервера то они читаются нормально.

Answer 1

Попробуйте вместо $_FILES['file']['name'] использовать $_FILES['file']["tmp_name"].

READ ALSO
2018 год шифрование

2018 год шифрование

Необходимо зашифровать парольКакие способы и методы шифровки пароля актуальны на данный момент? А то слышал что md5 в два счета расшифровывается

223
Всплывающее уведомление в Telegram Bot

Всплывающее уведомление в Telegram Bot

Видел такую штуку у многих ботовКто знает как реализовать, желательно показать на примере правильного запроса к API

208
Функции php не разрешены в CRON

Функции php не разрешены в CRON

когда запускается крон, получаю отчет

239
Среднее кол-во запросов к базе у сайтов

Среднее кол-во запросов к базе у сайтов

Сколько в среднем, Ваш сайт делает запросов к базе данных, при загрузке одной страницы?

219