Гость_Дмитрий
1.08.2013 - 15:08
Есть ссылка
<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
1.08.2013 - 15:57
Цитата |
$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
Гость_Дмитрийвот попробуйте такой код:
<?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:
Цитата (Эли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(); } ?> |
В таком варианте приходит в ответ содержимое файла по переданному урл, но запроса на сохранение не происходит.
Гость_Дмитрий
1.08.2013 - 18:26
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-ом