Показать сообщение отдельно
  #1 (permalink)  
Старый 04.09.2010, 13:39
Новичок на форуме
Отправить личное сообщение для doom_man Посмотреть профиль Найти все сообщения от doom_man
 
Регистрация: 04.09.2010
Сообщений: 3

Открытия ссылки "на скачивания" и отслеживания статус загрузки файла браузером.
Доброе время суток!
У меня возникли сложности в процессе написания не большого JavaScript-а, а именно, есть некий процесс:
- пользователь выделяет файлы на web странице, JS обрабатывает это выделение, получает ID элемента( для каждого файла оно будет уникальным), собирает массив JS, перевожу его этот объект в формат JSON и отправляю данные на сервер (не большой PHP скрипт)
- сервер получив эти данные обрабатывает, выбирает нужные файлы по ID (полная информация о файлах храниться в БД). Упаковывает выбранные файлы в архив zip и перемещает во временную public директорию для скачивания, дальше серверный сценарий отвечает обратно в браузер в формате JSON, в одном из параметров как раз и будет ссылка на этот архив.

Вот как это выглядит у меня:
function GetSelectedFiles(id){
if(id){
	selectedIDs.length = 0;
	uncheckSelection();
	selectedIDs.push(id);
}

if(selectedIDs.length > 0 ){
	oSendingData.file_list 		=  selectedIDs;	
	$.post(php_download_link,JSON.stringify(oSendingData),onDownload,'json');
	}
else{
	printStatusbar("Выберите файл(ы) для скачнивания");
	} 

// Если скачиваем по иконки, то отчищаем массив
if(id)
	selectedIDs.length = 0;
	
	function onDownload(responce_json){
		// Проверка ответа от сервера	
		checkAuthAndError(responce_json);
		// Если получили ссылку на файл!
		window.location.href = responce_json.download_link;
	};
};

Собственно в чем проблема, после того как скрипт получил данные от сервера, я отдаю ссылку на «временный» файл в браузер, что бы конечно пользователь мог её скачать, это происходит вот в этой строке:

window.location.href = responce_json.download_link;


Так вот именно тут возникают две не понятки.
1) Если я даю ссылку не в на .ZIP архив, а на файл .JPEG, то браузер почему то открывает эту ссылку в ЭТОМ же окне и отображает картинку в браузере. Возможно ли как-нибудь заставить браузер открывать ссылку всегда с предложением для скачивания?
2) Пока временные файлы лежат во временном каталоге и я их удаляю периодический в ручную, думал вешать на сервере скрипт на perl\bash\php под cron-ом, который удалял бы файлы через N-кол-во времени, но это не совсем хороший способ, по многим причинам. Итак вопрос, возможно ли при помощи JS отследить, был ли скачен файл или нет? Если бы была возможность, то я бы просто после скачивания файла отправлял бы не большой запрос на сервер с подтверждением скачивания файла, и на сервере удалял бы его из временного каталога.

Помогите, плз может кто сталкивался с подобной задачей
Ответить с цитированием