Intereting Posts
Приложение для Android, подключающееся к веб-сервису – не работает Фрагмент Android, просмотр не удаляется Как уменьшить изменчивость в задержке затвора камеры Android? Вставить изображение в базу данных realm в android Значок поиска на мягкой клавиатуре Android: Сброс позиции анимации после завершения Как заблокировать экран устройства Android Как установить вес для включенных макетов? Как интегрировать twilio в реакцию native для Android? Как установить высоту одного компонента компоновки на одну и ту же высоту другого компонента? Как открыть активность во всплывающем окне? Как переопределить URL-адрес репозитория зависимостей времени выполнения Robolectric? Использование SurfaceTexture, заполненного предварительным просмотром камеры, как вход Renderscript. Выделение в Jelly Bean Обнаружение вызова при удержании Java.lang.NullPointerException: попытка вызвать виртуальный метод 'int android.view.ViewGroup.getPaddingLeft ()' в ссылке на нулевой объект

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

Мне нужно загрузить файл, и я использую этот код , который в основном представляет собой 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, это означает, что вы не можете знать размер файла, так как сервер не разрешает его.