Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 09:02   #1
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию возвращение файла на ajax запрос

Здравствуйте.
Имеется запрос
Код:
$.ajax({  
   type: "POST",
   url: "downloadfile.php",  
   data: 'FileName='+link.id+'&NumbAg='+<?echo $NambAg?>,
   cache: false,  
   success: function(data){   
   $('#glavzapoln').html(data);
                                   }
       });
при удачном запросе должен возвращаться фал, но сохранение не происходит, подозреваю не правильно обрабатываю возвращаемый результат подскажите как решить проблему
код php которому происходит запрос
Код:
function file_force_download($file) 
	{
		if (file_exists($file)) 
		{
			header('X-SendFile: ' . realpath($file));
			header('Content-Type: application/octet-stream');
			header('Content-Disposition: attachment; filename=' . basename($file));
			unlink($file);
			exit;
		}
	}
	
	$FileList=ftp_nlist($conn_id, dirname($_POST['NumbAg'].'/'));
	foreach($FileList as $val)
		if ($val==$_POST['FileName'])
			{
				if(!ftp_get($conn_id, $_POST['FileName'], $_POST['FileName'], FTP_BINARY)) echo 'невозможно загрузить файл';
				ftp_quit($conn_id);
				file_force_download($_POST['FileName']) ;
				exit;
			}
		
				echo 'Файл не существует';
Lokos вне форума Ответить с цитированием
Старый 04.06.2014, 09:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я не знаю как правильно а AJAX принимать файлы, но вот сохранить их точно не удастся. Поэтому рекомендую запрашивать файлы через window.open() как обычная закачка по ссылке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2014, 09:36   #3
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

то есть отправлять запрос который будет с фтп закачивать на сервер потом выполнять windows.open() и потом еще один запрос на удаление файла с сервера?
может есть какое то другое решение? смысл в том чтоб сохранять файл с фтп сервера

Последний раз редактировалось Lokos; 04.06.2014 в 09:39.
Lokos вне форума Ответить с цитированием
Старый 04.06.2014, 09:59   #4
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Сделай обычной формой, не парься с ajax.
Если возвращается файл, то перехода не произойдет, а браузер начнет скачивать файл.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 04.06.2014, 10:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А почему не отправить запрос через open() сразу на ftp?
Браузеры же без проблем умеют и оттуда файлы качать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2014, 11:09   #6
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Можно, но не вижу необходимости открывать новое окно.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 04.06.2014, 11:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
не вижу необходимости открывать новое окно.
Э-э-эм... намекаешь на использование window.location ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2014, 11:30   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Намекаю на использование нативного HTML =)

Пост-запрос возвращает файл, так? Значит при сабмите формы перехода не произойдет, а браузер сразу начнет тянуть этот самый файлик.

Тим Бернерс Ли все продумал еще до Брендона Айка, а с этими аяксами и джейкверями люди уже (жопу подтереть) два числа сложить не могут без ангуляра)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 04.06.2014, 12:01   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А-а-а... Вон чего.
Ну да, логично. Все новое - хорошо забытое старое.
Хотя я как-то привык уже в JS многое делать. Впрочем фреймворки навороченные как-то не перевариваю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2014, 07:38   #10
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
По умолчанию

Переделал код вот так
Код:
<form action="downloadfile.php" method="post"/>
<input type="hidden" name="FileName" id="HidenFileName"/>
<input type="hidden" name="NumbAg" id="HidenNumbAg"/>
<input type="submit"  id="SaveFile" style="display:none;"/>
</form>
<script>
$(document).ready(function() {
					$('.Download').click(function(){
						var link=this;
                                                console.log(link.id);
                    				$('#HidenFileName').val(link.id);
					<?echo "$('#HidenNumbAg').val(".$NambAg.');'?>
						$('#SaveFile').click();
									})
	});
</script>
и при загрузке php скрипта вылетает ошибка
Cannot modify header information - headers already sent by
немного не понимаю в чем проблема
вот код функции подкачивающей файл с ftp
Код:
function file_force_download($file) 
	{
		if (file_exists($file)) 
		{
			header('X-SendFile: ' . realpath($file));
			header('Content-Type: application/octet-stream');
			header('Content-Disposition: attachment; filename=' . basename($file));
			unlink($file);
			exit;
		}
	}
Lokos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается выполнить ajax запрос barfly JavaScript, Ajax 5 09.08.2012 06:37
Ajax запрос (jQuery) Newpitbull JavaScript, Ajax 3 14.04.2012 21:25
ajax запрос в jquery Qaliti JavaScript, Ajax 7 06.03.2012 23:20
Ajax Запрос moqa JavaScript, Ajax 10 28.12.2011 10:46
Повторяющийся ajax запрос aferistz JavaScript, Ajax 1 06.07.2011 17:57