2013-07-18 2 views
0

Я создаю многоэтапную загрузку файла с помощью symfony2.Как обмениваться файлами между представлениями в symfony2

Первый экран позволяет пользователям загружать CSV-файл.

Второй экран позволяет пользователям сопоставлять столбец базы данных с столбцом CSV.

У меня есть два метода в моем контроллере, по одному для каждого экрана.

file_upload => Первый экран

match_csv => Второй экран

Внутри метода file_upload, у меня есть следующий код:

return $this->redirect($this->generateUrl('match_csv', 
         array(
           'accountId' => $accountId, 
           'projectId' => $projectId, 
           'file' => base64_encode($file->getPathname()) 
          ) 
         ), 301); 

и в моем match_csv методе, у меня есть следующие код:

$file = base64_decode($file); 
    $csvFile = new \SplFileObject($file); 
    $csvFile->setFlags(\SplFileObject::READ_CSV); 

Моя проблема заключается в:

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

Насколько я понимаю, PHP удаляет временные файлы, как только выполнение сценария прекращается. Следовательно, когда я переключаю представления в symfony2, метод file_upload останавливается и файл удаляется.

Мои вопросы/являются:

Есть ли лучшая альтернатива поделиться закачанный файл через просмотров?

Это хорошая идея написать временный файл самостоятельно, а затем удалить его сразу после того, как я прекратил его использовать, чтобы Symfony2/PHP не удалял его автоматически?

ответ

0

Не рекомендуется хранить имя файла в URL-адресе, это риск для безопасности. Для этого используйте сеанс.

  1. Я хотел бы сделать это следующим образом: загрузить файл во временную область и сохранить путь вы переместили его в сессии.

  2. Затем, в вашем втором методе, получите путь от сеанса, выполните сеанс , а затем удалите файл. Вот и все.

+0

Имя файла в URL-адресе предназначалось только для демонстрационных целей. Я оставил его так, как в последний раз, когда я коснулся своего кода, прежде чем перемещать имя файла из сеанса в URL-адрес. – ILikeTacos

Смежные вопросы