PHP: проблемы с загрузкой файлов при обновлении страницы

0

Я просто работаю над простой формой на PHP, но у меня проблема, у меня есть много полей в моей форме, и один из них - тип ввода файла, если нет проблем с загруженным файлом, но произошла ошибка в другом поле, Как я могу (на обновленной странице) сохранить ранее загруженный файл?

Теги:
file
upload

2 ответа

2

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

Ну, так как вы знаете, что делаете, вам действительно не нужен сценарий, вам действительно нужна помощь/идеи о том, как подойти к тому, что вы хотите. Я бы сделал так:

- Сохраните путь загруженного файла в переменной пользовательских данных сеанса, например $_SESSION['uploaded_file'], и извлеките его после ошибки.
- Используйте AJAX, другую форму, чтобы загрузить файл, прежде чем пользователь нажмет submit.

Obs: Если пользователь отказывается от завершения формы, даже если он загрузил файл, его файлы будут на вашем сервере, "украв" какое-то полезное место. Поэтому я не знаю, действительно ли это хороший подход, но хороший, будет использовать разные формы, разобрав действие загрузки из информации о форме.

Реальный пример: если пользователь заполняет форму, чтобы быть членом вашего сайта/форума/независимо, просто позвольте ему загрузить изображение профиля позже, только когда его учетная запись действительно активна. Вы могли бы сэкономить немного неприятностей.

Еще один: если пользователь просто хочет изменить изображение профиля, также сделать действие загрузки не имеющим никакого влияния (и наоборот) с его информацией о профиле и т.д. Это проблема сбережения и более подходящее решение.

Но, если вы хотите загрузить фотографию в галерею и задать описание и т.д. Для изображения, вы можете использовать более развернутую проверку, используя javascript/ajax для проверки правильности заполнения полей перед отправкой данных.

  • 0
    В дополнение к первому подходу; Я использовал его несколько раз, но сначала я перемещаю загруженный файл во временный каталог - protected (не в tmp dir сервера). Каждую ночь я позволю cronjob очистить этот каталог, удалив все файлы старше 24 часов (через 24 часа они либо заполнили форму, либо прекратили свои попытки)
  • 0
    это не работает: пример <form> <input type = "text" ....> <input type = "text" ....>. <input type = "text" ....> <input type = "file" ...> </ form> если у меня есть ошибка в одном поле "TEXT" и НЕ в файле, при появлении обновленной страницы я бы придется вставлять только один текст, и я бы рядом с полем с именем Выберите файл "имя файла" (ранее загружен).
Показать ещё 1 комментарий
0

Сначала загрузите код, чтобы сохранить значения в SESSION, например:

$_SESSION[name] = $_POST[name];

затем распечатайте его в своих ВХОДАх, например:

<input type="text" name="name" value="<?=$_SESSION[name]?>">

Не забудьте использовать session_start().

Или ищите альтернативы javascript

  • 0
    это не работает: пример <form> <input type = "text" ....> <input type = "text" ....>. <input type = "text" ....> <input type = "file" ...> </ form> если у меня есть ошибка в одном поле "TEXT" и НЕ в файле, при появлении обновленной страницы я бы придется вставлять только один текст, и я бы рядом с полем с именем Выберите файл "имя файла" (ранее загружен).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню