Подтвердить что ты не робот

Найти размер файла по ссылке для загрузки с помощью jQuery

Мне было интересно, есть ли способ использовать jQuery, чтобы узнать размер файла для PDF, который я связываю с веб-страницей.

Я хочу сделать так, чтобы при наведении курсора на ссылку для загрузки появилось модальное поле, в котором говорилось о размере файла в формате PDF. Я могу сделать второй бит, единственное, что я хотел бы знать, - это узнать размер файла. Я не знаю, способен ли jQuery на это. Если нет, то слишком плохо, я думаю..

Приветствия заранее.

4b9b3361

Ответ 1

Я чувствую, что это слишком много, чтобы делать клиентскую сторону, но я не знаю подробностей вашего приложения, поэтому, полагая, что вам нужно сделать это с помощью jQuery... вы можете сделать запрос HEAD и посмотреть заголовок Content-Length. Раньше я рекомендовал плагин jqHead, но после того, как я попытался его использовать, я обнаружил, что он был сломан.

Вот рабочий пример, который не зависит от каких-либо дополнительных плагинов: http://host.masto.com/~chris/so/jqhead.html

Мясо очень просто:

  var request;
  request = $.ajax({
    type: "HEAD",
    url: $("#url").val(),
    success: function () {
      alert("Size is " + request.getResponseHeader("Content-Length"));
    }
  });

Ответ 2

Вот рабочий фрагмент, чтобы найти размер файла в javascript, не переходя на сервер, если вы собираетесь загрузить файл на сервер.

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

<input type="file" id="loadfile" />
<input type="button" value="find size" onclick="findSize()" />
<script type="text/javascript">
    function findSize() {
        var fileInput = $("#loadfile")[0];
        alert(fileInput.files[0].size); // Size returned in bytes.
    }    
</script>

Ответ 3

Если вы заранее знаете размер файла, вы можете поместить его в атрибут title ссылки для загрузки. Вы также можете использовать jQuery для отображения пользовательского всплывающего окна.

В противном случае невозможно получить только размер файла (длину содержимого) URL-адреса без фактической загрузки всего содержимого AFAIK.

Ответ 4

Единственный способ, которым я могу это сделать, - создать веб-службу, которая вернет вам размер файла PDF.

Ответ 5

В приведенном выше ответе Chrome 21 и Safari 6 не имеют члена fileSize, но имеют размер. Использование:

fileInput.files [0].size