Intereting Posts
BigDecimal раунд до 0 или 5 Масштабирование ImageView для размера TextView в XML Отображение измененного предварительного просмотра камеры в реальном времени Android: KeyListener для EditText не получает ключи Как обнаружить и распечатать с USB-принтера с Android Невозможно выполнить прокрутку в ListView в swipeRefreshLayout Проект не был построен, поскольку его путь сборки является неполным Есть ли способ запустить тест Espresso с несколькими методами тестирования, но только один метод установки? Как отобразить форматированный текст в формате HTML в поле PopUp с помощью диалогового окна создания предупреждений? В чем разница между использованием add (). AddToBackStack (), add (). Detach () и replace (). AddToBackStack () в FragmentTransaction? Использование jquery mobile tap вместо щелчка Как остановить обслуживание самостоятельно? Сколько тем мы можем сделать в Firebase Cloud Messaging? Android 2.3.x javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: доверять привязке для пути сертификации не найдено Отображать новые элементы в верхней части списка ListView

Как узнать размер файла перед его загрузкой?

Мне нужно загрузить файл, и я использую этот код , который в основном представляет собой AsyncTask , предназначенный для обновления индикатора выполнения. Но, так как я не знаю, в каком размере файла мне нужно использовать индикатор выполнения spinner. Итак, как я могу получить размер файла, прежде чем загружать его, чтобы я мог использовать нормальный индикатор выполнения?

Solutions Collecting From Web of "Как узнать размер файла перед его загрузкой?"

Вы можете получить заголовок с именем Content-Length из объекта HTTP Response, который вы получите, это даст вам длину файла. Вы должны заметить, что некоторые серверы не возвращают эту информацию, и единственный способ узнать фактический размер – это прочитать все из ответа.

Пример:

 URL url = new URL("http://server.com/file.mp3"); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); int file_size = urlConnection.getContentLength(); 

Вы обычно можете использовать getContentLength , но лучше всего получить длину самостоятельно (поскольку она может обойти максимальное значение целого).

Просто проанализируйте значение заголовка содержимого. Лучше разобрать его так долго.

пример:

 final URL uri=new URL(...); URLConnection ucon; try { ucon=uri.openConnection(); ucon.connect(); final String contentLengthStr=ucon.getHeaderField("content-length"); //... } catch(final IOException e1) { } 

Обратите внимание, что я могу быть любой строкой, поэтому используйте try catch, а если это -1, пустой или null, это означает, что вы не можете знать размер файла, так как сервер не разрешает его.