HTML - в браузере и принудительных загрузках

0

На веб-сайте я работаю над тем, чтобы предлагать пользователям две ссылки для каждой загрузки: "Просмотр" и "Загрузка". Большинство, если не все эти загрузки, будут в формате PDF. Цель View - заставить документ отображаться в браузере с помощью плагина/расширения PDF, тогда как ссылка "Загрузить" заставляет загружать файлы на локальное хранилище.

У меня это работает так:

<div class="DownloadLinks">
    <a href="./images/services/example.pdf">View</a> 
    <a href="./images/services/example.pdf" download="">Download</a></div>
</div>

Но теперь я хочу сделать это таким образом (используя PHP для хранения и получения документов), и он больше не работает:

<div class="DownloadLinks">
    <div class="DownloadLinks"><a href="./get_document.php?doc_id=3">View</a> 
    <a href="./get_document.php?doc_id=3" download="">Download</a></div>
</div>

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

Теги:

2 ответа

0

Я бы порекомендовал просто использовать javascript из-за вашей CMS. Здесь хорошая функция для этого.

var downloadURL = function downloadURL(url) {
    var hiddenIFrameID = 'hiddenDownloader', iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
};

Это будет для сценария загрузки. Если вы хотите использовать php, чтобы вы могли отслеживать количество загрузок (или что-то подобное по линиям), вы могли бы просто использовать AJAX для этого.

  • 0
    Таким образом, я бы назвал эту функцию из атрибута onclick, который я вставил в ссылку? т.е. onclick = "downloadURL ('./ get_document.php? doc_id = 3')" ??? Я попробовал это, но ничего не делал ...
  • 0
    На самом деле, это означает, что вы можете скачать файл только с помощью JavaScript. Поэтому onclick="downloadURL('files/doc1.pdf')"
Показать ещё 6 комментариев
0

Вам нужно добавить следующие заголовки в get_document.php, когда вы нажимаете ссылку для загрузки (для указания этого может потребоваться дополнительный параметр GET):

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: ' . filesize($file));

Где $ file - это путь к вашему файлу, вы можете вручную заменить имя и размер файла, но убедитесь, что имя содержит правильное расширение.

Изменить, вы говорите, что у вас нет доступа к CMS - как насчет HTTP-сервера? Или это хостинг-сервис?

Ещё вопросы

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