[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отдача файла с помощью PHP
Гость_Дмитрий
Есть ссылка
<a class="JS_send" href='path_server/file.txt'>ссылка</a>


ajax-ом отправляю href на сервер

$(".JS_send").on('click', function(e){
var url = $(this).attr('href');
e.preventDefault();
$.ajax({
url: '/url',
type: 'POST',
dataType: 'JSON',
data: 'url='+url});
})


на сервере ловлю эту ссылку на файл и пытаюсь отправить его для скачивания

$file = $_POST['url'];
if (file_exists($file)) {
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
// читаем файл и отправляем его пользователю
readfile($file);
exit;
}


однако ни чего не происходит.
Игорь_Vasinsky
Цитата
$file = $_POST['url'];

да ну нафиг.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Эли4ка
Гость_Дмитрий
вот попробуйте такой код:
<?php
$rFile = @fopen('file.zip', 'r');
$rOutput = fopen('php://output', 'w');
if($rFile)
{
header('Content-Disposition: attachment; filename='.'file.zip');
stream_copy_to_stream($rFile, $rOutput);
exit();
}
?>

Цитата
да ну нафиг.

Игорь_Vasinsky,а что не так? :unsure:
Guest
Цитата (Эли4ка @ 1.08.2013 - 16:05)
Гость_Дмитрий
вот попробуйте такой код:
<?php
$rFile = @fopen('file.zip', 'r');
$rOutput = fopen('php://output', 'w');
if($rFile)
{
header('Content-Disposition: attachment; filename='.'file.zip');
stream_copy_to_stream($rFile, $rOutput);
exit();
}
?>

В таком варианте приходит в ответ содержимое файла по переданному урл, но запроса на сохранение не происходит.
Гость_Дмитрий
function download($file) {
$rFile = @fopen($file, 'r');
$rOutput = fopen('php://output', 'w');
if($rFile){
header('Content-Disposition: attachment; filename='.basename($file));
stream_copy_to_stream($rFile, $rOutput);
exit();
}
}

В таком варианте приходит в ответ содержимое файла по переданному урл, но запроса на сохранение не происходит.

все дело в том что запрос приходит то ajax-ом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.