2014-11-09 5 views
1

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

Мое текущее решение загружает изображение независимо от того, была ли форма подтверждена или нет, а затем проверяет, существует ли файл с тем же именем, что и имя в $ _FILES, и служит этому. Но это приводит меня к проблеме с дубликатами. Я добавляю дубликат имени файла с номером (например, file2.jpg), но это означает, что загруженный файл всегда найдет имя изображения «file.jpg», даже если файл, загруженный пользователем, присвоил имя «file3.jpg» ».

Должен быть более простой способ.

+0

_ «проверки, если существует файл с таким же именем, что и имя в $ _FILES, и служит, что» _ - что делает не имеет никакого смысла. Если в папке назначения уже существует файл 'foo.jpg', и пользователь загрузил файл с именем' foo.jpg', это не означает, что они фактически являются одним и тем же изображением, а вовсе не. – CBroe

+0

Да, я понимаю, это то, что я говорю, это проблема, с которой сталкивается мое текущее решение. – SpringsTea

ответ

0

Как сохранить файл с хэшированным именем md5 (name + actualTimestamp) и сохранить это имя файла в сеансе пользователя (вы можете сохранить это имя файла в файлах cookie или использовать таблицу сеансов mysql с сериализованными данными сеанса).

+0

Это похоже на разумное решение, спасибо! – SpringsTea

+0

Рад помочь;) (кстати, вы можете отметить этот ответ как полезный, чтобы помочь другим с тем же вопросом;)) –

0

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

ваш код должен быть что-то вроде:

<form method="post" action="process.php"> 

<input type="hidden" name="form_id" value="<?php if(isset($_POST['form_id'])){ echo $_POST['form_id']; }else{ echo date("Ymdhis"); }" /> 

<!-- other form objects goes here --> 

</form> 
Смежные вопросы