Теоретически, вы можете использовать XHR для выдачи HTTP HEAD
запроса и проверки Content-Length
в заголовках ответа.
A HEAD
запрос идентичен обычномуGET
запрос кроме сервер НЕ ДОЛЖЕН возвращать фактическое содержимое.Другими словами, сервер отвечает заголовками, которые он попытался бы GET
ресурс, но затем останавливает и не отправляет файл.
Однако некоторые серверы отвечают на запрос HEAD
с заголовком Content-Length
0
независимо от фактического размера файла.Другие отвечают размером файла.
Для этого вам нужно помолиться, чтобы ваш сервер вернул фактический размер файла в запрос HEAD
.
Если это так, получить это значение легко :
$.ajax('/myfile.js', {
type: 'HEAD',
success: function(d,r,xhr) {
fileSize = xhr.getResponseHeader('Content-Length');
}
});
Обратите внимание, что сервер JSFiddle всегда возвращает 0
, когда мы HEAD /
, даже если /
равен 16916
байтов.
Также обратите внимание, что документы jQuery говорят о параметре типа HTTP-запроса:
Тип запроса ("POST" или "GET"), по умолчанию -"ПОЛУЧИТЬ".Примечание. Здесь также можно использовать другие методы HTTP-запросов, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.
Я только что протестировал эту скрипку в IE 6-10, Firefox 3.6-7, Opera 9-11 и Chrome, и каждый браузер правильно выдал запрос HEAD
, так что я не буду беспокоиться об этом смутном утверждении о несовместимости.Больше беспокойства вызывает ответ вашего сервера.