2009-01-15 3 views
7

Быстрый (и, надеюсь, простой) вопрос: Мне нужно запустить загрузку PDF-файла, созданного файлом PHP. Я могу это сделать:Правильный способ запуска загрузки файла (в PHP)?

<a href="download.php">Download</a> 

, но должен ли я делать это по-другому? Возможно, Javascript? Вышеупомянутое работает, но в окне отображается «Загрузка ...» до начала загрузки. Я хотел бы сообщить пользователям, что что-то происходит.

Идеи?

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

Некоторые сайты имеют загружаемые файлы, которые автоматически запускаются. Как они это делают?

Проблема с прямым URL-адресом заключается в том, что если ошибки PHP-скрипта будут заменять содержимое существующей страницы, это не то, что я хочу.

+1

Этот вопрос не связан с PHP, и способ, которым он был озаглавлен, сформулирован и помечен неверно, привлекает посетителей, которые ищут что-то совершенно другое. Я пишу это, потому что это первый результат, который я получил при поиске чего-то, что действительно связано с PHP. Я попытался отредактировать, но мое редактирование было отклонено :(Так что я прошу оригинального плаката или кого-то еще, кто был достаточно привилегирован, чтобы удалить любые ссылки на PHP из этого сообщения. – Tom

+0

Это случилось со мной тоже Том, отредактированный. –

+0

Я действительно нашел это полезно, потому что он появился первым, когда я искал «файл загрузки php-сервера с помощью javascript» – Boom

ответ

13

EDIT

Да JavaScript, что-то вроде:

<a href="download.php" onclick="this.innerHTML='Downloading..'; downloadPdf(this);">Download</a> 

Если вам нужно на самом деле понять при запуске загрузки вам, вероятно, нужно вызвать iframe, а затем использовать на нем событие «onload». Например:

// javascript 
function downloadPdf(el) { 
    var iframe = document.createElement("iframe"); 
    iframe.src = "download.php"; 
    iframe.onload = function() { 
     // iframe has finished loading, download has started 
     el.innerHTML = "Download"; 
    } 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
} 
+0

+1 для рабочего кода (по внешнему виду) ... – benlumley

+0

Вы shoud возвращаете false, чтобы отключить эту ссылку. – Gumbo

2

подделкой его с помощью обработчика OnClick событие, чтобы показать прядильной GIF

<a href="download.php" onclick="ShowDownloading();">Download</a> 
3

Решение, которое у вас есть для скачивания в порядке. Возможно, вам захочется рассмотреть некоторые визуальные обратные связи с пользователем, возможно, используя javascript, чтобы показать «Загрузка, пожалуйста, подождите сообщение» на текущей странице при нажатии ссылки через обработчик onclick. Или просто укажите, что загрузка может занять некоторое время, чтобы начать с ссылки. Поскольку IE выгружает страницу, останавливая любые анимации GIF, я предпочитаю текстовые указания для загрузки файлов.

2

Автоматический запуск загрузки обычно используют мета-тег внутри обычной страницы:

<META HTTP-EQUIV="REFRESH" CONTENT="10.0;URL=download.php"> 

Этот пример перенаправляет браузер в течении 10 секунд download.php.

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