2009-05-29 2 views
1

У меня есть страница, которая должна принимать файлы .csv без предопределенного макета. То есть пользователь будет выбирать, какие данные в каждом столбце.Сохраняйте загруженные файлы на нескольких страницах

Теперь форма загружаемого файла отправляет мне сценарий .php, который может получить доступ к загруженному файлу. Он читает его и позволяет пользователю назначать категории для каждого из столбцов. Мой следующий шаг - скопировать данные из CSV-файла в базу данных, но я не уверен, как сохранить файл из временного каталога, мне все еще нужно его на следующей странице, где я делаю фактическое копирование , Кроме того, я не заинтересован в том, чтобы копировать файл в другое место на сервере, это кажется пустой тратой, и было бы хлопот, чтобы делать это правильно, позволяя использовать параллелизм.

Как предотвратить удаление файла или, альтернативно, лучшее решение этой проблемы?

ответ

3

Ну, я не уверен, что это можно обслуживать, не перемещая загруженный файл.

Лично я бы реализовать таким образом:

На странице, которая получает загруженный файл:

//assuming it hasn't already been started... 
session_start(); 

//generate a unique filepath 
$filepath = PATH_TO_THE_DIR . "/" . time() . 
"_" . md5_file($_FILES['formelement']['tmp_name']) . ".csv"; 

//move the uploaded file 
move_uploaded_file($_FILES['formelement']['tmp_name'], $filepath); 

//do whatever you need with the file, now at $filepath 

//now store the filepath in the session: 
$_SESSION['uploaded_filepath'] = $filepath; 

session_write_close(); 

На второй странице, когда вы хотите сделать больше обработки:

//assuming it hasn't already been started... 
session_start(); 

$filepath = $_SESSION['uploaded_filepath']; 

// do whatever you need to with the file 

unlink($filepath); 

unset($_SESSION['uploaded_filepath']); 

session_write_close(); 

Это должно быть хорошо - очевидно, вам нужно будет проверить разрешения на константу PATH_TO_THE_DIR , которая будет только где-то в каталоге.

+0

Я боялся, что это был ответ. Ну что ж. Выбрано, потому что это дает пример. –

2

Вам необходимо использовать move_uploaded_file. Скорее всего, копировать его в другое место действительно нет. И вы не должны беспокоиться об этом, потому что такие вещи не являются проблемой для любой файловой системы. Что касается параллелизма, я не вижу, как вы столкнетесь с проблемами. Миллионы приложений PHP отлично справляются :-)

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