Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2016, 17:06
Новичок на форуме
Отправить личное сообщение для alexKl Посмотреть профиль Найти все сообщения от alexKl
 
Регистрация: 28.10.2016
Сообщений: 3

Можно ли при помощи JS узнать размер файла(аудио), на клиенте?
Задача - узнать размер трека. Загружать не катит ибо файлов много. Это возможно?

(файлы на сервере)

Последний раз редактировалось alexKl, 28.10.2016 в 17:14.
Ответить с цитированием
  #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.
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2016, 19:21
Новичок на форуме
Отправить личное сообщение для alexKl Посмотреть профиль Найти все сообщения от alexKl
 
Регистрация: 28.10.2016
Сообщений: 3

Спасибо, то что нужно)
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2016, 20:08
Аватар для Опан
Кандидат Javascript-наук
Отправить личное сообщение для Опан Посмотреть профиль Найти все сообщения от Опан
 
Регистрация: 15.03.2013
Сообщений: 100

Сообщение от Aetae Посмотреть сообщение
var req = new XMLHttpRequest();
Это на клиенте?
<input type="file" id="myfile" onchange="rdfile(this.files)">

<script>
var reader = new FileReader();
function rdfile(files){
	reader.readAsArrayBuffer(files[0]);
	reader.onload = function(e){
		var arr=new Int8Array(e.target.result);
		alert("Ваш файл в байтах: " + arr.length);
	}
}
</script>

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

Сообщение от Опан Посмотреть сообщение
Это на клиенте?
Сообщение от alexKl Посмотреть сообщение
(файлы на сервере)

Но если говорить о клиенте, то совершенно не нужно грузить весь файл в память, да ещё и пихать в массив, чтоб узнать его размер. Это сверхъизбыточно.
<input type="file" id="myfile" onchange="alert(files[0].size)">
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2016, 20:35
Аватар для Опан
Кандидат Javascript-наук
Отправить личное сообщение для Опан Посмотреть профиль Найти все сообщения от Опан
 
Регистрация: 15.03.2013
Сообщений: 100

А вот просто alert(e.target.result.length); выдаёт undefined.
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2016, 21:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Опан, а должен что-то другое? Почитайте спецификацию, или ли хотя бы справку по методам и свойствам, не придётся городить извращения. У буффера например не "length", а "byteLength". Не знаю, честно говоря, нафига отошли от привычного стандарта, но наверное были некие веские причины.*с сомнением пожал плечами*
__________________
29375, 35

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



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно реализовать при помощи js и json datin jQuery 2 22.04.2016 03:49
Можно легко узнать разрешение экрана. А как именно JS это узнает? jungle Общие вопросы Javascript 12 29.11.2010 01:43
Сортировка таблицы, при помощи js Prizrak177 Общие вопросы Javascript 10 02.09.2010 12:17
Как отразить картинку при помощи JS. 2dkott Элементы интерфейса 4 03.09.2009 22:51
Обратная связь ПРИ ПОМОЩИ JavaScript qwertypop Элементы интерфейса 2 23.04.2009 18:30