отправить файл через форму и обработать его в функции php - PullRequest
0 голосов
/ 01 октября 2009

Мне нужно загрузить файл (в данном случае CSV-файл) и загрузить его содержимое в следующую функцию:

function csv2xml($file, $container = 'data', $rows = 'row')
{
        $r = "<{$container}>\n";
        $row = 0;
        $cols = 0;
        $titles = array();


        while (($data = fgetcsv($file, 1000, ',')) !== FALSE)
        {
             if ($row > 0) $r .= "\t<{$rows}>\n";
             if (!$cols) $cols = count($data);
             for ($i = 0; $i < $cols; $i++)
             {
                  if ($row == 0)
                  {
                       $titles[$i] = $data[$i];
                       continue;
                  }

                  $r .= "\t\t<{$titles[$i]}>";
                  $r .= $data[$i];
                  $r .= "</{$titles[$i]}>\n";
             }
             if ($row > 0) $r .= "\t</{$rows}>\n";
             $row++;
        }
        $r .= "</{$container}>";

        return $r;
}

Вот как я вызываю функцию

csv2xml($_POST['file'], $container = 'wholething', $rows = 'item');

В форме поля ввода имя файла

Я получаю следующее предупреждение:

  fgetcsv() expects parameter 1 to be resource, null given

Ответы [ 2 ]

2 голосов
/ 01 октября 2009

Сначала необходимо открыть файл, например:

$filePointer = fopen($file, "r"); // read-only

Тогда используйте:

while (($data = fgetcsv($filePointer, 1000, ',')) !== FALSE)

для получения ваших данных.

Обратите внимание, что вы, вероятно, захотите проверить информацию PHP file upload , чтобы убедиться, что вы используете массив $ _FILES для получения загруженного файла. а не только $ _POST.

0 голосов
/ 01 октября 2009

@ richsage уже ответил на вопрос. Если у вас все еще есть проблемы, посетите документацию для рабочего примера. Я просто хотел указать на ваш вызов функции:

csv2xml($_POST['file'], $container = 'wholething', $rows = 'item');

Хотя это работает, это не то, как вы вызываете функции.

csv2xml($_POST['file'], 'wholething', 'item');

Это то, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...