Я создаю многоэтапную загрузку файла с помощью 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_upload
match_csv
, сервер возвращает ошибку о том, что файл больше не существует.
Насколько я понимаю, PHP удаляет временные файлы, как только выполнение сценария прекращается. Следовательно, когда я переключаю представления в symfony2, метод file_upload останавливается и файл удаляется.
Мои вопросы/являются:
Есть ли лучшая альтернатива поделиться закачанный файл через просмотров?
Это хорошая идея написать временный файл самостоятельно, а затем удалить его сразу после того, как я прекратил его использовать, чтобы Symfony2/PHP не удалял его автоматически?
Имя файла в URL-адресе предназначалось только для демонстрационных целей. Я оставил его так, как в последний раз, когда я коснулся своего кода, прежде чем перемещать имя файла из сеанса в URL-адрес. – ILikeTacos