Pregunta

Yo uso NSURLConnection para descargar archivos de gran tamaño de la web en el iPhone. Yo uso el método "didReceiveData" para añadir datos a un archivo en la carpeta Documentos. Trabaja muy bien.

Si se interrumpe la descarga (por ejemplo, porque el usuario pulsa el botón "Inicio"), me gustaría ser capaz de continuar la descarga de la próxima vez que el usuario lanzar mi solicitud, y no desde cero!

Alguien me puede ayudar?

¿Fue útil?

Solución

ASIHTTPRequest tiene fácil utilizar la ayuda para la reanudación de descargas:

http://allseeing-i.com/ASIHTTPRequest/How-to -uso # curriculum vitae

Por otra parte, averiguar la cantidad de datos que ya ha descargado por mirar el tamaño de los datos existentes, y establecer el encabezado 'Rango' en su NSMutableURLRequest :

[request addValue:@"bytes=x-" forHTTPHeaderField:@"Range"];

.. donde x es el tamaño en bytes de los datos que ya tiene. Esto descargará los datos a partir de byte x. A continuación, puede añadir estos datos a su archivo como lo reciba.

Tenga en cuenta que el servidor web que está descargando de debe ser compatible con las descargas parciales para el recurso que está intentando descargar - envía los rangos de cabecera Accept-si es así. Generalmente no es posible reanudar las descargas de contenido generado dinámicamente (por ejemplo, una página generada por un script en el servidor).

Otros consejos

El único método que se me ocurre es la de romper el archivo que está descargando en archivos más pequeños. Puede utilizar el

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

método para determinar cuando se termina cada parte del archivo, y reiniciar la descarga en la última porción que no fueron descargados.

Mira el estándar HTTP para ver cómo lo que se formaría una solicitud para iniciar una transferencia de un recurso de un desplazamiento específico. No puedo encontrar ningún código de improviso, lo siento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top