Форум

Домой Основной раздел Помощь веб-разработчикам Получение размера файла по ссылке на AJAX
4ответ(ов) в теме
Apocalypse
не в сети 1 месяц
На сайте с 27.08.2018
Администратор
Тем 1
Сообщения 82
1
15:21

В общем, передо мной встала задача получения размера нужного файла. Всё это нужно выполнить на стороне клиента. Пробовал вот такой метод:

var request = new XMLHttpRequest(), b = 'https://imapo.ru/wp-content/uploads/2018/12/particles.zip';
request.open('GET', b, false);
request.send();
var size = request.getAllResponseHeaders().toLowerCase().match(/content-length: d+/);
Но он возвращает предупреждение "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience"

Есть ещё предложения?

Apocalypse
не в сети 1 месяц
На сайте с 27.08.2018
Администратор
Тем 1
Сообщения 82
2
15:32

Может попробовать в связке с PHP? В PHP написать функцию получения размера файла, а уже на ajax обращаться к этому файлу и брать размер?

Apocalypse
не в сети 1 месяц
На сайте с 27.08.2018
Администратор
Тем 1
Сообщения 82
3
16:11

В общем, сделал через связку PHP + AJAX. В итоге вот такой PHP файлик:

<?php
$url = $_GET['url'];
if($url) {
	function fsize($path)
	{
	$fp = fopen($path,"r");
	$inf = stream_get_meta_data($fp);
	fclose($fp);
	foreach($inf["wrapper_data"] as $v)
	if (stristr($v,"content-length"))
	{
	$v = explode(":",$v);
	return trim($v[1]);
	}
	}
	?>
	<div>
	<?
	echo floor(fsize($url)/1024);
	?>
	</div>
	<?php
} else {
	exit();
}
?>

И примерно вот такая функция обращения к файлику:

$.get('/js/apo_get_file_size.php?url=https://imapo.ru/wp-content/uploads/2018/11/processing.min_.zip', function(a) {
alert($(a).text());
});

Apocalypse
не в сети 1 месяц
На сайте с 27.08.2018
Администратор
Тем 1
Сообщения 82
4
16:21

Это получился самый оптимальный вариант, так как, даже если использовать получение файла на чистом ajax, чтобы получить размер, необходимо будет его "скачать" гет запросом и уже потом ловить полученный размер.

Оффтоп
Так себе вариант, скажу я вам

Тема закрыта. Публикация новых сообщений запрещена.