Tengo que descargar un archivo y estoy usando this code, que es básicamente un AsyncTask
que está destinado a actualizar una barra de progreso. Pero, como no sé cuál es el tamaño del archivo, he tenido que usar la barra de progreso de la ruleta. Entonces, ¿cómo puedo obtener el tamaño del archivo antes de comenzar a descargarlo para poder usar una barra de progreso normal?¿Cómo saber el tamaño de un archivo antes de descargarlo?
Respuesta
puede obtener un encabezado llamado Content-Length
del objeto de Respuesta HTTP que obtiene, esto le dará la longitud del archivo. , debe tener en cuenta, sin embargo, que algunos servidores no devuelven esa información, y la única forma de saber el tamaño real es leer todo de la respuesta.
Ejemplo:
URL url = new URL("http://server.com/file.mp3");
URLConnection urlConnection = url.openConnection();
urlConnection.connect();
int file_size = urlConnection.getContentLength();
esto funcionará en la mayoría de los casos, pero si el archivo es demasiado grande, no funcionará. Ver mi publicación a continuación para una solución que siempre funciona: http://stackoverflow.com/a/12271781/878126 –
Debe usar getContentLengthLong() en lugar de getContentLength() para Android 7 y superior. A continuación, prefiero usar Long.parseLong (urlConnection.getHeaderField ("content-length")) – Sandeep
normalmente se puede utilizar getContentLength, pero lo mejor es que obtener la longitud por sí mismo (ya que se puede pasar por alto el valor máximo de número entero).
simplemente analice el valor del encabezado de la longitud del contenido usted mismo. Mejor analizarlo siempre.
ejemplo:
final URL uri=new URL(...);
URLConnection ucon;
try
{
ucon=uri.openConnection();
ucon.connect();
final String contentLengthStr=ucon.getHeaderField("content-length");
//...
}
catch(final IOException e1)
{
}
tenga en cuenta que puedo ser cualquier cadena, a fin de utilizar intento de captura, y si es -1, vacía o nula, significa que no se puede saber el tamaño de la archivo ya que el servidor no lo permite.
La primitiva de Java es un entero de 32 bits con signo; es probable que no supere el valor máximo con un encabezado de tipo de contenido – mjama
que en realidad puede, es de aproximadamente 2 GB. –
, entonces, ¿qué hacer al lado del servidor para que lo permita ...? –
- 1. Uso de WinInet para identificar el tamaño total del archivo antes de descargarlo
- 2. Obtener tamaño del archivo de imagen antes de descargarlo de la web
- 3. ¿Cómo recuperar el tamaño de un archivo antes de subirlo?
- 4. ¿Comprueba el tamaño del archivo en S3 sin descargarlo?
- 5. Cómo obtener el tamaño de archivo de los encabezados http
- 6. Asp.Net Verificar el tamaño del archivo antes de cargar
- 7. Obtener el tamaño del archivo de carga antes de cargar
- 8. borrar un archivo después de descargarlo de usuario
- 9. Cómo saber el tamaño de un texto al utilizar Canvas.drawText()
- 10. obtener el tamaño de archivo de un archivo para wget antes de wget-ing?
- 11. Python ftplib no puede obtener el tamaño del archivo antes de la descarga?
- 12. ¿Cómo enviar un archivo al navegador para descargarlo?
- 13. ¿Cómo verificar el tamaño de un archivo?
- 14. ¿Cómo saber un tamaño de mapa de bits de InputStream antes de crear el mapa de bits?
- 15. ¿Cómo saber el tamaño original (ancho y alto) de un archivo swf con java?
- 16. Cómo obtener el tamaño de archivo
- 17. Cómo saber el tamaño de MTU de teléfono inteligente Android
- 18. Cambie el nombre del archivo pdf para descargarlo en vuelo
- 19. ¿Cómo saber el tamaño de la cadena en bytes?
- 20. Bitbucket: enlaza un archivo desde la punta para descargarlo
- 21. Ver un archivo PDF en HTML para no descargarlo
- 22. Compruebe si existe el archivo web, sin descargarlo?
- 23. Cómo saber el tamaño de una variable en MATLAB
- 24. ¿Cómo puedo saber en Perl cuál es el tamaño de un archivo dentro de un archivo gzip sin tener que desempaquetar todo el archivo?
- 25. ¿Cómo mido el tamaño de un TextBlock en WPF antes de que se represente?
- 26. Cómo estimar el tamaño del archivo zip en java antes de crearlo
- 27. ¿Cómo ver el tamaño del archivo antes de comprometerme con git?
- 28. HTML5 Canvas: cómo saber el límite para el tamaño?
- 29. Android: Medir el tamaño de la vista antes de representar
- 30. SharpZipLib crear un archivo con una cadena en la memoria y descargarlo como un archivo adjunto
Tenga en cuenta que debe llamar a 'urlConnection.connect()' antes de intentar acceder al encabezado 'Content-Length'. No hacerlo podría funcionar, pero no en todas las circunstancias posibles. – Felix
No sabía que ... funcionó de esa manera para mí, pero gracias por su consejo. Voy a editar la respuesta. – Cristian