Показать сообщение отдельно
  #2 (permalink)  
Старый 28.10.2016, 18:08
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

HEAD запросом, если сервер отдаёт размер. Примерно так
function getFileSize(url, callback){
  function promise(resolve){
    var req = new XMLHttpRequest();
    req.open('HEAD', url, true);
    req.onreadystatechange = () => {
      if(req.readyState === 2){
        var size = req.getResponseHeader('Content-Length');
        if(!size){
          if (size = /\bsize=([^;]+)/.exec(req.getResponseHeader('Content-Disposition'))) 
            size = size[1];
        }
        req.abort(); //чтоб не грузил лишнего
        resolve(+size || 0);
      }
    };
    req.onerror = req.ontimeout = () => resolve(0);
    req.send(null);
  }
  
  if(callback) return promise(callback);
  return new Promise(promise);
}
__________________
29375, 35

Последний раз редактировалось Aetae, 28.10.2016 в 18:12.
Ответить с цитированием