Escribí un programa que descarga algunos archivos de algunos servidores.
Actualmente el programa funciona correctamente.
Pero quiero agregar soporte para currículums.
lo estoy haciendo así, pero el archivo de resultados está dañado:Java: reanudar la descarga en URLConnection
....
File fcheck=new File(SaveDir+"/"+filename);
if(resumebox.isSelected() && fcheck.exists()){
connection.setRequestProperty("Range", "Bytes="+(fcheck.length())+"-");
}
connection.setDoInput(true);
connection.setDoOutput(true);
BufferedInputStream in = new BufferedInputStream (connection.getInputStream());
pbar.setIndeterminate(false);
pbar.setStringPainted(true);
java.io.FileOutputStream fos ;
if(resumebox.isSelected()){
if(fcheck.exists()){
if(connection.getHeaderField("Accept-Ranges").equals("bytes")){
fos = new java.io.FileOutputStream(SaveDir+"/"+filename,true);
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
}else{
fos = new java.io.FileOutputStream(SaveDir+"/"+filename);
}
....
estoy probando en un servidor que sé soportes reanudan.
Descargué algunos bytes. (72720)
Luego intenté reanudarlo.
Luego abrí el archivo con un editor hexadecimal, en el desplazamiento 72720 se repiten los primeros bytes:
Bytes 0-36: FLV ............. «........ ..onMetaData
Bytes 72720-72756: FLV ............. «.......... onMetaData
¡Comienza la descarga desde el principio!
¡Mientras que cuando lo hago por wget lo hace correctamente y las respuestas por el campo Content-Range!
Respuestas del servidor con "302 FOUND" y un "206 Partial Content" en el registro de wget.
¿Puede "302 ENCONTRADO" causar el problema?
¿Cuál es el problema?
Gracias.
El otro problema es que tiene un bloque if/else anidado innecesariamente profundo. Haga uso del operador '&&'. Es decir. 'if (a && b && c) {fos = nuevo FOS (nombre, verdadero); } else {fos = nuevo FOS (nombre); } ' Eso es. SECO. – BalusC
¡He resumido el código! en esos bloques if else estoy subiendo algunos mensajes, así debería ser como está. pero gracias por tu respuesta. – RYN
El 302 no debería ser un problema ya que HTTPUrlConnection sigue los redireccionamientos de forma predeterminada. A menos que esté desactivando los redireccionamientos explícitamente, lo cual dudo ya que realmente está obteniendo contenido de archivos –