понедельник, 1 декабря 2008 г.

ExtJs: загрузка файла с сервера с обработкой ошибок

Задача: необходимо загружать файлы с сервера. Учитывая приличный размер файлов (несколько мегабайт) желательно реализовать загрузку файлов по ссылке, без пропускания содержимого файла через JSON. Возникла сложность как, открывая файл по ссылке, быть с обработкой ошибок. Помогло открытие ссылки в iframe:
function downloadFile(url){
var stub = Ext.get('cc-download-stub');
if (!stub)
stub = Ext.get(Ext.DomHelper.append(document.body, {tag: 'iframe', cls: 'x-hidden', width:'0',
height:'0', frameBorder:0, src: 'about:blank', id: 'cc-download-stub'}));

stub.dom.src = url ; // or url + '&_dc=' + (new Date().getTime()) to prevent caching
}
В случае ошибки при обращении к файлу скрипт на сервере формирует вызов Javascript-функции из родительского окна с соответствующим сообщением:
print $cgi->header(-type => 'text/html', -charset => 'UTF-8');
print '<script type="text/javascript">',
'parent.iframeError(\''.$msg.'\');',
'</script>';

Комментариев нет:

Отправить комментарий