[JavaScript] Можно ли узнать вес картинки?
Браузер ведь знает.
Нахрена тебе это знать-то?
Это не тот size
А подробнее?
А тут человек какого-то хрена хочет узнать, сколько весит эта картинка как файл, в байтах.
можно
Можно ли узнать вес картинки на странице 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>
Картинка и так грузится аяксом. Но хотелось бы отсекать сразу ненужный запрос и говорить юзеру "размер картинки превысил максимально допустимое значение" без ненужного запроса к серверу и загрузки этой картинки (всё таки траффик и время).
В любом случае на сервер-сайд будет ещё одна проверка, но хотелось бы это сделать на клиенте
Ну и неправильная задача — я всегда смогу посмотреть твой js и написать свой без этой проверки. Так что проверки на сервере достаточно.
ненужного запроса к серверу и загрузки этой картинкиHEAD-запрос не грузит картинку, только заголовки получает
Я честно говоря не понимаю, картинка по твоему описанию находится на твоем сервере, как ты собираешься узнать ее размер, не делая запрос к серверу?
Если картинка предварительно аплоадится на сервер, то картинку слишком большого размера можно отсекать в процессе заливки на стороне сервера, это можно сделать до окончания заливки.
В общем уточни, чего ты хочешь.
Оставить комментарий
Ivan826
Можно ли узнать вес картинки на странице JavaScript?Броузер ведь знает