Так... Ну, в основном окне что-то типа вот этого (код PHP):
CODE:<div>
<div id="waiter" style="display: none;"><img src="wait.gif"><input type="button" value="Отмена" onclick="document.getElementById('waiter').style.display='none'; loadFrame.location='loadform.php';"></div>
<iframe src="loadform.php" name="loadFrame">
<!--Альтернативная форма загрузки -->
<form action="addfile.php" method="POST"><input type="file" name="myfile"><input type="hidden" name="id" value="<?php echo getFileId(); ?>"><input type="submit" value="Отправить файл!"></form>
</iframe>
</div> Функция getFileId() должна, соответственно, возвращать уникальный идентификатор для файла (чтобы можно было ждать подтверждения для файла и убирать те, для которых не дождались подтверждения).
Дальше, в loadform.php:
CODE:<form action="addfile.php" method="POST" onsubmit="parent.document.getElementById('waiter').style.display='block';"><input type="file" name="myfile"><input type="hidden" name="id" value="<?php echo getFileId(); ?>"><input type="submit" value="Отправить файл!"></form> - всё то же самое.
Тот же addfile.php делает что-то вроде:
CODE:<?php
addFile($_FILES['myfile'], $_POST['id']); //Добавляем файл в базу
header("Location: ok.php?id=$_POST[id]");
?>
А уж ok.php окончательно регистрирует файл и выдаёт что-то вроде:
CODE:Закачано успешно!
<script type="text/javascript"> parent.document.getElementById('waiter').style.display='none'; </script>
Ну и, конечно, файлы, для которых не пришло подтверждение, скажем, за 1 минуту, ндо убивать, дабы место на хосте не кончилось (а то загрузка файлов - классный способ завалить хост!).(Отредактировано автором: 30 Августа, 2007 - 00:45:29) |