Доброе время суток!
У меня возникли сложности в процессе написания не большого 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 отследить, был ли скачен файл или нет? Если бы была возможность, то я бы просто после скачивания файла отправлял бы не большой запрос на сервер с подтверждением скачивания файла, и на сервере удалял бы его из временного каталога.
Помогите, плз может кто сталкивался с подобной задачей