Нужна помощь в загрузке файла с функцией header () - PullRequest
0 голосов
/ 03 мая 2010

Я пытаюсь объяснить как можно лучше, извините за мой английский. У меня есть список ссылок, каждая из которых связана с php-файлом с идентификатором по параметрам (например, download.php?id=1 или ?id=2 и т. Д.). Этот файл создает новый экземпляр класса, который возвращает правильный заголовок файлов, поэтому он отображает диалоговое окно сохранения браузера.

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

Вот проблема, когда он возвращает false или что-то еще, браузер перенаправляет меня в файл download.php, так что я получаю пустую страницу или что я повторяю Мне нужно, чтобы, если файл уже загружен, он показал мне js alert для совета ppl. Надеюсь, вы понимаете, о чем я. Спасибо за помощь

Ответы [ 4 ]

2 голосов
/ 03 мая 2010

Технически вы можете без ajax, download.php может вывести следующее, если пользователь уже скачал файл:

<script>
alert('It was false - you already have the file!');
window.back();
</script>

Все зависит от того, насколько хорошо он интегрируется с вашим сайтом. Не проверено, но это общая идея.

0 голосов
/ 03 мая 2010

Вы должны обращаться с этим в двух местах для лучшего поведения.

  1. Определите, может ли пользователь загрузить файл при создании страницы загрузки, и не создавайте ссылки для файлов, которые нельзя загрузить.

  2. Чтобы справиться со случаем, когда кто-то имеет несколько открытых окон или иным образом загружает файл без перезагрузки страницы загрузок, проверьте, может ли пользователь загрузить файл в download.php до отправки любых заголовков. Если он не может, отправьте перенаправление на страницу загрузки:

    header("Location: downloads.php?error=repeat_download");
    exit;
    

    … и используйте параметр error, чтобы включить в начало списка файлов сообщение, объясняющее, что произошло.

0 голосов
/ 03 мая 2010

Итак, у вас есть страница, похожая на:

1. file1
2. file2
3. file3

и у них есть ссылки на скрипт загрузки на каждом. Если вы хотите предотвратить несколько загрузок, вы делаете это в двух местах. Здесь, на главной странице списка файлов, и на странице download.php. Когда пользователь нажимает на один из файлов, у вас есть обработчик onclick, удаляющий ссылку из файла, по которому щелкнули. Это можно сделать, обновив эту страницу (и просто не добавляя ссылку на скачивание при создании страницы), или используя некоторые манипуляции с DOM для удаления тега вокруг имени файла.

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

Выполнение этого в обоих местах будет ухудшаться, если по какой-либо причине в клиенте не включен Javascript.

0 голосов
/ 03 мая 2010

в этом случае показывать предупреждение js слишком поздно, вам нужно будет сделать что-то вроде ajax, чтобы проверить, был ли загружен файл, а затем показать предупреждение или начать загрузку файла.

как только ваш веб-браузер начал загружать новый URL (например, download.php), тогда уже слишком поздно, вы уже уходите с текущей страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...