2011-01-16 4 views
0

Мне интересно, какой лучший рабочий процесс будет для обработки этого процесса.Процесс загрузки файла php/ajax?

Основные шаги.

Пользователь выбирает файл csv и загружает его.
Затем файл csv проверяется на набор правил.

Если файл csv недействителен Пользователю показаны строки, которые являются недопустимыми.
Пользователю предоставляется возможность прекратить загрузку или убрать недопустимые строки.

Если файл csv действителен или нажата полоса, щелкните . Пользователь отображает экран для выбора имени файла.

Если имя уже занято пользователю предоставляется выбор
а) переименовать файл (на имя по своему выбору)
б) заменить существующий файл.
c) переименуйте файл в filename_1 и т. Д.

Когда имя выбрано, создается таблица в базе данных, называемой (csv_filename);
Затем данные из csv вводятся в таблицу.
Файл удален.
Пользователь берется на страницу, содержащую данные файла (из таблицы)


Мой вопрос, Это все проходит через AJAX. Как обработать отчет о том, с каким файлом мы имеем дело?

Я не хочу передавать имя файла в ответе ajax, поскольку это слишком легко вмешаться.

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

+0

Помните: если вам нужно указать, что делать в конфликте имен файлов, вам нужно будет сохранить файл на сервере где-нибудь, так как PHP удалит его, когда запрос закончится, иначе пользователь будет иметь для повторной загрузки файла после каждого приглашения. –

+0

Когда я загружаю файл, я сохраняю файл в каталоге, который автоматически удаляет все файлы старше 30 минут. Часть, на которую я застрял, заключается в том, как я могу убедиться, что я могу ссылаться на файл в следующем приглашении, что это лучший способ справиться с этим, передать все имя файла, создать таблицу, содержащую ссылку id/filename, любую другие решения? – Hailwood

ответ

0

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

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

В любом случае, чтобы сообщить, с каким файлом вы имеете дело, сохраните его в переменной сеанса.

+0

, насколько легко могут быть подделаны сеансы (данные, содержащиеся в файлах, довольно чувствительны, следовательно, я над верхней защитой). также, , прекратив загрузку, на самом деле означало прекратить процесс, следовательно, выполняется сценарий, который удаляет файл, а затем перенаправляется. – Hailwood

+0

Что касается ввода имени файла, я имел в виду A display filename. data_export_users_19.25.2010.csv не особенно приятно смотреть в списке «файлов». – Hailwood

+0

Если его общий хостинг и вы используете обработчик сеанса по умолчанию, его несколько тривиально для любого на сервере, чтобы читать данные, хранящиеся в сеансе, как обычно в папке/tmp в виде плоского файла. И на стороне клиента всегда есть возможность захвата сеанса с помощью атаки mitm или другого перехвата. В противном случае его довольно безопасно. – profitphp

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