Answer the question
In order to leave comments, you need to log in
[header readfile] After uploading the file, php code execution stops. How to continue?
Please help
Wrote a function to send a file to a user
//~~~~~~~~~~~~~~~~~~~~~~~~
// отправить файл от сервера к пользователю
// $file_path - путь к файлу на сервере, который будем отправляться пользователю
// $file_name - предложить имя, под которым файл будет записан на компьютере пользователя
//~~~~~~~~~~~~~~~~~~~~~~~~
function output_file($file_path='', $file_name=''){
if (file_exists($file_path)){
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
// если этого не сделать файл будет читаться в память полностью!
if (ob_get_level()) {
ob_end_clean();
}
// по умолчанию совпадает с именем $file_path
if($file_name == ''){
$file_name = basename($file_path);
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
//header('Content-Type: application/octet-stream');
header('Content-Type: '.mime_content_type($file_path));
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file_path));
readfile($file_path); // читаем файл и отправляем его пользователю
}
}
Answer the question
In order to leave comments, you need to log in
I suspect that the non-standard, but widely supported, HTTP header Refresh
, better known by the corresponding ( http-equiv
) meta tag, can help in this case. It's OK to give the HTML document first and then the file, it should work (in this case, both the title and the tag can be used). Perhaps it will work in the opposite way (of course, in this case only the header can be used), but when it works: after the start or after the download is completed, I can’t say, I haven’t checked it myself yet.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question