[JavaScript] Можно ли узнать вес картинки?

Ivan826

Можно ли узнать вес картинки на странице JavaScript?
Броузер ведь знает

kruzer25

А можно ли узнать, что у пользователя лежит в %appdata%\.purple\accounts.xml, с помощью JavaScript?
Браузер ведь знает.

sbs-66

Нахрена тебе это знать-то?

kruzer25

Это не тот size ;)

saveliev_a

А подробнее?

kruzer25

size - это размеры картинки, например, 100*100 пикселей.
А тут человек какого-то хрена хочет узнать, сколько весит эта картинка как файл, в байтах.

IvladV71

можно

anatolii

Можно ли узнать вес картинки на странице JavaScript?
1) Если это форма аплоада, то лучше проверять вес на стороне сервера.
2) Если картинка грузится с какого-то урла.
В IE есть свойство fileSize, размер картинки в байтах, в Опере, FF и скорее всего во всех остальных браузерах его нет.
<img alt="blah" onload="alert(this.fileSize + ' bytes')" src ="/foo/bar.gif" />
3) Если картинка на твоем сайте.
Можно сделать HEAD-запрос с помощью XMLHttpRequest. Работать будет в большинстве браузеров. Ботай Ajax. Ключевые методы open и getResponseHeader. Примерно так:
 

<script type="text/javascript">
var XmlHttpRequestObject;
function GetImageFilesize(url)
{
XmlHttpRequestObject = null;
try
{
XmlHttpRequestObject = new XMLHttpRequest;
}
catch (ex)
{
try
{
XmlHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (ex)
{
}
}
if (XmlHttpRequestObject)
{
XmlHttpRequestObject.onreadystatechange = function {
if (XmlHttpRequestObject.readyState == 4)
{
alert(XmlHttpRequestObject.getResponseHeader("Content-Length") + ' bytes');
}
};
XmlHttpRequestObject.open("HEAD", url, true);
XmlHttpRequestObject.send(null);
}
else
{
alert("Your browser suck!");
}
}
</script>

Ivan826

Это конечно спасибо, но мне не много не то хочется.
Картинка и так грузится аяксом. Но хотелось бы отсекать сразу ненужный запрос и говорить юзеру "размер картинки превысил максимально допустимое значение" без ненужного запроса к серверу и загрузки этой картинки (всё таки траффик и время).
В любом случае на сервер-сайд будет ещё одна проверка, но хотелось бы это сделать на клиенте

pilot

Нельзя спросить HEAD запрос, а у ответа на клиенте прочитать Cotent-Length (или любой другой заголовок)?
Ну и неправильная задача — я всегда смогу посмотреть твой js и написать свой без этой проверки. Так что проверки на сервере достаточно.

vall

вот какая-то хрень, аж прогрессбары рисует, хз как она работает
http://www.brettle.com/neatupload
скорее всего в процессе загрузки с сервера получает

anatolii

ненужного запроса к серверу и загрузки этой картинки
HEAD-запрос не грузит картинку, только заголовки получает :confused:
Я честно говоря не понимаю, картинка по твоему описанию находится на твоем сервере, как ты собираешься узнать ее размер, не делая запрос к серверу?
Если картинка предварительно аплоадится на сервер, то картинку слишком большого размера можно отсекать в процессе заливки на стороне сервера, это можно сделать до окончания заливки.
В общем уточни, чего ты хочешь.
Оставить комментарий
Имя или ник:
Комментарий: