Загрузка файла блокируется браузером всплывающих окон - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть функция загрузки файла в php, которая вызывает загружаемый файл, но блокировщик всплывающих окон браузера не позволяет открыть его.

Цель состоит в том, чтобы иметь кнопку отправки формы в формате html, которая отправляет форму, редактирует файл rtf на сервере на основе входных данных формы, а затем загружает новый файл пользователю.

Поскольку мне нужен php для запуска некоторого кода после того, как пользователь нажимает на загрузку и до загрузки файла, я не мог заставить его работать каким-либо другим способом.Мне пришлось сделать php echo ссылку, а затем какой-нибудь js-код, который щелкает эту ссылку.

Функция загрузки:

function download($path, $name){
if(!file_exists($path)){
    echo $path." does not exist.";
}
else{
    echo "
<a href='download.php?path={$path}&name={$name}' id='download' 
target='download_frame' style='display:none;'>Download File</a>
<script>document.getElementById('download').click();</script>
    ";
    }
}

download.php:

<?php
header("Content-type: application/doc");
basename($_GET["path"]));
$name = $_GET["name"];
header("Content-Disposition: attachment; filename='".$name.".doc");
header("Content-Transfer-Encoding: quoted_printable");
header('Pragma: no-cache');
header('Expires: 0');

header("Cache-Control: public");
header("Content-Description: File Transfer");

header('Content-Transfer-Encoding: binary');
header("Content-type: application/force-download");
header('Content-Type: application/octet-stream');

readfile($_GET["path"]);

1 Ответ

0 голосов
/ 29 декабря 2018

Вы можете сделать заголовок вместо echo и используя JavaScript:

header ('location: download.php?path='. $path .'&name='. $name);

Это перенаправит на download.php на той же странице и предложит скачать файл.

...