0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
1

Загрузка файла и дальнейшая работа именно с загруженным файлом

18.12.2014, 18:32. Показов 1540. Ответов 10
Метки нет (Все метки)

Добрый вечер! Коротко что это за штука: Загрузить файл (xls), затем считать из загруженного файла данные, отобразить их, использую phpexcel. Подскажите пожалуйста, как в строчке "$xlsData = getXLS(' УКАЗАТЬ ПУТЬ К ЗАГРУЖЕННОМУ (ТЕКУЩЕМУ) ФАЙЛУ');" вот с этим именем "$rand_name"?


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php include_once('include/config.php');?>
<?php include_once('include/function.php');?>
<?php
    // ограничение размера файла
    $limit_size = 1*1024*1024; // 1 Mb
    // корректные форматы файлов
    $valid_format = array("xls");
    // хранилище ошибок
    $error_array = array();
    // путь до нового файла
    $path_file = "files/";
    // имя нового файла
    $rand_name = md5(time() . mt_rand(0, 9999));
 
    // если есть отправленные файлы
    if($_FILES){
        // валидация размера файла
        if($_FILES["upload_file"]["size"] > $limit_size){
            $error_array[] = "Размер файла превышает допустимый!";
        }
        // валидация формата файла
        $format = end(explode(".", $_FILES["upload_file"]["name"]));
        if(!in_array($format, $valid_format)){
            $error_array[] = "Формат файла не допустимый!";
        }
        // если не было ошибок
        if(empty($error_array)){
            // проверяем загружен ли файл
            if(is_uploaded_file($_FILES["upload_file"]["tmp_name"])){
                // сохраняем файл
                move_uploaded_file($_FILES["upload_file"]["tmp_name"], $path_file . $rand_name . ".$format");
                fopen($rand_name, r);
            }else{
                // Если файл не загрузился
                $error_array[] = "Ошибка загрузки!";
            }
        }       
    }
    
        //Функция принимает имя xls файла, считывает его, занося данные ячеек строк в массив, и возвращает этот массив как результат
    function getXLS($rand_name){
        include_once 'Classes/PHPExcel/IOFactory.php';
        $objPHPExcel = PHPExcel_IOFactory::load($rand_name);
        $objPHPExcel->setActiveSheetIndex(0);
        $aSheet = $objPHPExcel->getActiveSheet();
        
        $array = array();//этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
        //получим итератор строки и пройдемся по нему циклом
        foreach($aSheet->getRowIterator() as $row){
            //получим итератор ячеек текущей строки
            $cellIterator = $row->getCellIterator();
            //пройдемся циклом по ячейкам строки
            $item = array();//этот массив будет содержать значения каждой отдельной строки
            foreach($cellIterator as $cell){
                //заносим значения ячеек одной строки в отдельный массив
                array_push($item, iconv('utf-8', 'utf-8', $cell->getCalculatedValue()));
            }
            //заносим массив со значениями ячеек отдельной строки в "общий массив строк"
            array_push($array, $item);
        }
        return $array;
    }
    
    $xlsData = getXLS('ЗДЕСЬ НУЖНО УКАЗАТЬ ПУТЬ К ЗАГРУЖЕННОМУ ФАЙЛУ'); //извлекаем данные из XLS
 
    echo $xlsData[0][0];
    echo "&nbsp";
    echo $xlsData[0][1];
    echo "<br>";
    echo $xlsData[1][0];
    echo "&nbsp";
    echo $xlsData[1][1];
    echo "<br>";    
 
?>
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2014, 18:32
Ответы с готовыми решениями:

QFileDialog и дальнейшая работа с файлом
Всем здравствуйте. Ни дня не проходит без проблем с питоном)) Есть две функции: 1. Открывает файл...

Загрузка файла в нужную папку и дальнейшая обработка
Первый раз такое делаю, и сразу возникла проблема: Warning:...

Как открыть программу с уже загруженным файлом
Как открыть программу с уже загруженным файлом или как запустить программу с параметром? То есть...

Работа с текстом из файла и дальнейшая его обработка
Здрасте! Недавно выдали задание для курсовой работы: - обеспечить возможность ввода текста из...

10
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
18.12.2014, 18:35 2
Цитата Сообщение от Wind32 Посмотреть сообщение
$xlsData = getXLS('ЗДЕСЬ НУЖНО УКАЗАТЬ ПУТЬ К ЗАГРУЖЕННОМУ ФАЙЛУ'); //извлекаем данные из XLS
не совсем уверен, но попробуй
PHP
1
$xlsData = getXLS('$rand_name');
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
18.12.2014, 19:01  [ТС] 3
Спасибо, но увы так не работает, даже когда загружаю файл в самый корень. Немного уточню. Файлы сохраняются в папку files. Как сделать путь к файлу: "files/текущий(только что загруженный файл).xls"?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
18.12.2014, 19:14 4
$rand_name это только имя файла или весь путь к файлу?
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
18.12.2014, 19:17  [ТС] 5
Только имя файла.

PHP
1
2
3
4
// путь до нового файла
$path_file = "files/";
// имя нового файла
$rand_name = md5(time() . mt_rand(0, 9999));
И вот каким-то образом с помощью 2 этих переменных нужно составить путь (синтаксически правильно записать).
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
18.12.2014, 19:27 6
Цитата Сообщение от Wind32 Посмотреть сообщение
move_uploaded_file($_FILES["upload_file"]["tmp_name"], $path_file . $rand_name . ".$format");
а у тебя файл загружается? что за переменная $format? в этой строке вроде надо:
PHP
1
move_uploaded_file($_FILES["upload_file"]["tmp_name"], $path_file . $rand_name . $format);
Добавлено через 42 секунды
только в переменной $format = ".xls";

Добавлено через 2 минуты
а сори не досмотрел код

Добавлено через 3 минуты
Цитата Сообщение от Виталюска Посмотреть сообщение
$xlsData = getXLS('$rand_name');
может тогда вот так:
PHP
1
$xlsData = getXLS('file/'.$rand_name);
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
18.12.2014, 19:38  [ТС] 7
Не, так тоже не работает, белый экран. Есть еще какие-нибудь мысли?
0
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 6
18.12.2014, 20:33 8
В этом коде вероятно немного не хватает. Если так?
PHP
1
$xlsData = getXLS("$path_file$rand_name.$format");
Добавлено через 2 минуты
Цитата Сообщение от Wind32 Посмотреть сообщение
PHP
1
2
3
// сохраняем файл
 move_uploaded_file($_FILES["upload_file"]["tmp_name"], $path_file . $rand_name . ".$format");
 fopen($rand_name, r);
Зачем тут его открывают на чтение? Возможно это лишнее.
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
18.12.2014, 20:40  [ТС] 9
Все равно не работает.

Добавлено через 6 минут
Как только путь указываю жестко (files/xls.xls) все начинает работать. Строчка где открываем файл удалена.
0
0 / 0 / 0
Регистрация: 18.12.2014
Сообщений: 6
18.12.2014, 20:42 10
Вообще хотелось бы узнать файл вообще загружается и создается в указанной папке? Я уверен на 99% что данный путь верный "$path_file$rand_name.$format", обработка файла в функции getXLS точно работает корректно, если руками прописать имя уже существующего файла в папке files?

Добавлено через 1 минуту
что говорит var_dump("$path_file$rand_name.$format")?
0
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 12
18.12.2014, 21:09  [ТС] 11
Вот смотрите, есть страница на которой есть форма загрузки файла, выбираем файл, нажимаем загрузить он появляется в папке files, имя у него такого вида "95c1d69b6856ee62d20004a928fa34a9". А как только я подставляю

PHP
1
$xlsData = getXLS("$path_file$rand_name.$format");
Белый экран, формы для загрузки нет.

Если подставляю жесткий путь к файлу

PHP
1
$xlsData = getXLS("files/xls.xls");
Все начинает работать. Форма появляется, данные выводятся из этого файла.

Добавлено через 19 минут
Проблема решена! Вызов функции нужно было прописать тогда, когда проверили загружен файл или нет.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php include_once('include/config.php');?>
<?php include_once('include/function.php');?>
<?php
    // ограничение размера файла
    $limit_size = 1*1024*1024; // 1 Mb
    // корректные форматы файлов
    $valid_format = array("xls");
    // хранилище ошибок
    $error_array = array();
    // путь до нового файла
    $path_file = "files/";
    // имя нового файла
    $rand_name = md5(time() . mt_rand(0, 9999));
 
    // если есть отправленные файлы
    if($_FILES){
        // валидация размера файла
        if($_FILES["upload_file"]["size"] > $limit_size){
            $error_array[] = "Размер файла превышает допустимый!";
        }
        // валидация формата файла
        $format = end(explode(".", $_FILES["upload_file"]["name"]));
        if(!in_array($format, $valid_format)){
            $error_array[] = "Формат файла не допустимый!";
        }
        // если не было ошибок
        if(empty($error_array)){
            // проверяем загружен ли файл
            if(is_uploaded_file($_FILES["upload_file"]["tmp_name"])){
                // сохраняем файл
                move_uploaded_file($_FILES["upload_file"]["tmp_name"], $path_file . $rand_name . ".$format");
                    //Функция принимает имя xls файла, считывает его, занося данные ячеек строк в массив, и возвращает этот массыв как результат
                    function getXLS($rand_name){
                        include_once 'Classes/PHPExcel/IOFactory.php';
                        $objPHPExcel = PHPExcel_IOFactory::load($rand_name);
                        $objPHPExcel->setActiveSheetIndex(0);
                        $aSheet = $objPHPExcel->getActiveSheet();
                        
                        $array = array();//этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
                        //получим итератор строки и пройдемся по нему циклом
                        foreach($aSheet->getRowIterator() as $row){
                            //получим итератор ячеек текущей строки
                            $cellIterator = $row->getCellIterator();
                            //пройдемся циклом по ячейкам строки
                            $item = array();//этот массив будет содержать значения каждой отдельной строки
                            foreach($cellIterator as $cell){
                                //заносим значения ячеек одной строки в отдельный массив
                                array_push($item, iconv('utf-8', 'utf-8', $cell->getCalculatedValue()));
                            }
                            //заносим массив со значениями ячеек отдельной строки в "общий массв строк"
                            array_push($array, $item);
                        }
                        return $array;
                    }
                    $xlsData = getXLS("$path_file$rand_name.$format");
                /*  echo "<pre>";
                        print_r($xlsData); 
                    echo "</pre>";*/
                    
 
                    echo $xlsData[0][0];
                    echo "&nbsp";
                    echo $xlsData[0][1];
                    echo "<br>";
                    echo $xlsData[1][0];
                    echo "&nbsp";
                    echo $xlsData[1][1];
                    echo "<br>";
                    echo $xlsData[2][0];
                    echo "&nbsp";
                    echo $xlsData[2][1];
                    echo "<br>";
                    echo $xlsData[3][0];
                    echo "&nbsp";
                    echo $xlsData[3][1];
                    echo "<br>";
                    echo $xlsData[4][0];
                    echo $xlsData[4][1];
                    echo "<br>";
                    echo $xlsData[5][0];
                    echo "&nbsp";
                    echo $xlsData[5][1];
                    echo "<br>";
                    echo $xlsData[6][0];
                    echo "&nbsp";
                    echo $xlsData[6][1];
                    echo "<br>";
                    echo $xlsData[7][0];
                    echo "&nbsp";
                    echo $xlsData[7][1];
                    echo "<br>";
                    echo $xlsData[8][0];
                    echo "&nbsp";
                    echo $xlsData[8][1];
                    echo "<br>";
                    echo $xlsData[9][0];
                    echo "&nbsp";
                    echo $xlsData[9][1];
                    echo "<br>";
                    echo $xlsData[10][0];
                    echo "&nbsp";
                    echo $xlsData[10][1];
                    echo "<br>";
                    echo $xlsData[11][0];
                    echo "&nbsp";
                    echo $xlsData[11][1];
                    echo "<br>";
                    echo $xlsData[12][0];
                    echo "&nbsp";
                    echo $xlsData[12][1];
                    echo "<br>";
                    echo $xlsData[13][0];
                    echo "&nbsp";
                    echo $xlsData[13][1];
            }else{
                // Если файл не загрузился
                $error_array[] = "Ошибка загрузки!";
            }
        }       
    }
    
    
?>
Добавлено через 1 минуту
Всем спасибо за содействие!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 21:09
Помогаю со студенческими работами здесь

Чтение файла в массивы и дальнейшая работа с ними
Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать...

Считывание с бинарного файла большого массива и дальнейшая работа с ним
Здравствуйте. Подскажите пожалуйста. В общем передо мной стоит задача считать информацию из...

Загрузка и работа с текстовым файлом.
Здравствуйте. Только-только встал на тропу С#. Сейчас активно занимаюсь изучением, но на данный...

Работа с массивом загруженным из .txt
Здравствуйте! Пожалуйста, подскажите новичку в matlab. У меня есть массив данных потенциалов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru