Импорт CSV в Symfony 2



Я пытаюсь импортировать a .csv-файл в Symfony 2. Я создал форму файла и теперь хочу сохранить ее в своей базе данных.



Вот мой обработчик файла, где я хочу сделать .лечение csv и сохранить его:



public function process()
{
if ($this->request->getMethod() == 'POST')
{
$this->form->bindRequest($this->request);

$tableau = array();
$i = 0;
$c = 0;
$num = 0;

if (isset($_FILES['file']))
{
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,'r');
$row = 1;
$handle = fopen("$file", "r");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num =+ count($data);
$row++;

for ($c = $i; $c < $num; $c++)
{
$tableau[$c] = $data[$c];
$i++;
}
}
}
$tableau[$c+1] = $i;

/*
if ($this->form->isValid())
{
print_r($this->form->getData());

$this->onSuccess($this->form->getData());

return true;
}
*/
}

return false;
}


Когда я пытаюсь протестировать его, в верхней части страницы появляется текст:




Массив ( [компьютеризованная] => компонент на Symfony\HttpFoundationфайл объектUploadedFile (файл [тест:на SymfonyкомпонентHttpFoundation\UploadedFile:частная] => [originalName:SymfonyComponentHttpFoundationFileUploadedFile: private] = > testcsv.csv [mimeType:SymfonyComponentHttpFoundationFileUploadedFile:private] => text/csv [size:SymfonyComponentHttpFoundationFileUploadedFile:private] => 491 [error:SymfonyComponentHttpFoundationFileUploadedFile:private] => 0 [pathName:SplFileInfo:private] => /Applications/MAMP/tmp/php/phpSr5O5S [fileName:splfileinfo:private] => Phpsr5o5s ) )




Я не понимаю этих вещей.

588   2  

2 ответов:

Если вы хотите сделать правильный путь symfony2, вы должны создать форму symfony для отправки файла. Например:

// Your Controller.php
$form = $this->createFormBuilder()
        ->add('submitFile', 'file', array('label' => 'File to Submit'))
        ->getForm();

// Check if we are posting stuff
if ($request->getMethod('post') == 'POST') {
    // Bind request to the form
    $form->bindRequest($request);

    // If form is valid
    if ($form->isValid()) {
         // Get file
         $file = $form->get('submitFile');

         // Your csv file here when you hit submit button
         $file->getData();
    }

 }

return $this->render('YourBundle:YourControllerName:index.html.twig',
    array('form' => $form->createView(),)
);

Прутик:

<!-- index.html.twig Twig part -->
{% extends "YourBundle::layout.html.twig" %}

{% block content %}
    <form action="" method="post" {{ form_enctype(form) }}>
        {{ form_widget(form) }}

        <input type="submit" />
    </form>
{% endblock %}

Не забывайте, что {{ form_enctype(form) }} Важно сказать, что мы отправляем файл. Symfony2 генерирует тег enctype="multipart/form-data"

Если вам не нужна форма, вы можете сделать это:

public function processAction() {
    foreach($this->getRequest()->files as $file) { 
        if (($handle = fopen($file->getRealPath(), "r")) !== FALSE) {
            while(($row = fgetcsv($handle)) !== FALSE) {
                var_dump($row); // process the row.
            }
        }
    }
    //return response.
}

Comments

    Ничего не найдено.