Импорт файла с использованием PHP электронной таблицы - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь импортировать лист Excel, используя ajax, но он всегда возвращает ноль, когда я пытаюсь загрузить его. Я использую электронную таблицу PHP.

вот мой HTML код:

    <div class="modal-body">
                    <?php echo form_open_multipart('', array('id' => 'form_upload_user')); ?>
                    <input type="hidden" name="csrf_lendingtree_app" value="<?php echo $this->security->get_csrf_hash(); ?>" />
                    <h3 class="upload_header_title">UPLOAD FILE</h3>
                    <div class="input-file-upload">
                        <input type="file" name="upload_file" multiple>
                        <img class="upload_icon" src="<?php echo base_url('metronic/theme/classic/assets/images/upload-icon.png'); ?>" alt="">
                    </div>
                    <a href="<?php echo base_url('leaderboard/User/template'); ?>" classs="upload_download_template">Download template</a>
                    <div class="upload_btn_action">
                        <button type="button" class="btn-user-back" name="button" data-dismiss="modal">BACK</button>
                        <button type="submit" class="btn-user-ok" name="button">OK</button>
                    </div>
                </form>
            </div>

вот мой ajax код:

    $('#form_upload_user').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            url: base_url + "User/bulk_upload_users",
            data: new FormData(this),
            dataType: "json",
            contentType: false,
            cache: false,
            processData: false,
            success: function(data) {
                //if success close modal and reload ajax table
                $("input[name='csrf_app']").each(function() {
                    $(this).val(data['csrf_app']);
                });
                console.log(data);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                alert('Error adding / update data');
            }
        });
    });

и вот мой php код:

    public function bulk_upload_users()
    {
        $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        if(isset($_FILES['upload_file']['name']) && in_array($_FILES['upload_file']['type'], $file_mimes)) {
            $arr_file = explode('.', $_FILES['upload_file']['name']);
            $extension = end($arr_file);
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
            $spreadsheet = $reader->load($_FILES['upload_file']['tmp_name']);
            $sheetData = $spreadsheet->getActiveSheet()->toArray();
            echo json_encode(array("status" => $sheetData,"csrf_app" => $this->security->get_csrf_hash()));
        }else{
            echo json_encode(array("status" => "Not Exist","csrf_app" => $this->security->get_csrf_hash()));
        }
   }

Я всегда получаю ошибку File "" does not exist., кто-нибудь сталкивался с такой ошибкой?

Любая помощь будет очень признательна.

Я уже застрял, и я не знаю, что делать, как исправить эту ошибку.

1 Ответ

0 голосов
/ 05 марта 2020

Вы должны изменить свое условие с isset ($ _ FILES ['upload_file'] ['name']) на $ _FILES ['upload_file'] ['name']! = ''

Так что попробуйте в вашем php коде:

public function bulk_upload_users()
{
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    if($_FILES['upload_file']['name']!= "" && in_array($_FILES['upload_file']['type'], $file_mimes)) {
        $arr_file = explode('.', $_FILES['upload_file']['name']);
        $extension = end($arr_file);
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        $spreadsheet = $reader->load($_FILES['upload_file']['tmp_name']);
        $sheetData = $spreadsheet->getActiveSheet()->toArray();
        echo json_encode(array("status" => $sheetData,"csrf_app" => $this->security->get_csrf_hash()));
    }else{
        echo json_encode(array("status" => "Not Exist","csrf_app" => $this->security->get_csrf_hash()));
    }
}
...