Stack Overflow en español Asked by mjuan on December 24, 2020
Necesito descargar un pdf desde mi app android pero sin pisar el nombre, es decir, cuando ingreso la "url /.../.../valortiempo"
para generar la petición al servidor, este me va a responder con un pdf con su nombre,que hace referencia a ese tiempo que le envío.
La cuestión es que en mi código me pide que ingrese un nombre para renombrar a mi archivo, y lo que necesito es el nombre original del pdf:
String url = "";
try {
byte[] todo = null;
byte[] parte = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
URL newurl = new URL(url);
HttpURLConnection con =
(HttpURLConnection)newurl.openConnection();
con.connect();
int cont =0;
while ((cont = con.getInputStream().read(parte)) != -1) {
bos.write(parte, 0, cont);
bos.flush();
publishProgress(cont);
}
todo = bos.toByteArray();
File file;
String fileName = Uri.parse(url).getLastPathSegment();
file = File.createTempFile(fileName,null,getApplicationContext().getFilesDir());
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bost = new BufferedOutputStream(fos);
bost.write(todo);
listaDeArchivos.add(file);
bost.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
En realidad estas obteniendo el nombre del archivo original de la url mediante:
String fileName = Uri.parse(url).getLastPathSegment();
por ejemplo si tu url es :
String url = "http://www.example.com/some/path/to/a/file.pdf"
Mediante Uri.parse(url).getLastPathSegment()
se obtiene
file.pdf
Pero el método para guardar usado para guardar el archivo es createTempFile()
file = File.createTempFile(fileName,null,getApplicationContext().getFilesDir());
el cual requiere de un prefijo, un sufijo y el path destino.
createTempFile(String prefix, String Sufijo , File Directorio)
Prefix - La cadena de prefijo que se utilizará para generar el nombre del archivo; Debe tener al menos tres caracteres.
Sufijo - La cadena de sufijo que se utilizará para generar el nombre del archivo; Puede ser nulo, en cuyo caso se utilizará el sufijo ".tmp"
Directorio - El directorio en el que se va a crear el archivo, o null si se va a usar el directorio de archivos temporales por defecto
En este caso no es posible cambiar el nombre del "archivo temporal" a crear, únicamente agregar un prefijo y un sufijo:
como ejemplo, tengo una aplicación que usa este método y puedes notar defino un prefijo ("android_tutorial") y un sufijo (".pdf"):
file = File.createTempFile("android_tutorial", ".pdf", getApplicationContext().getFilesDir());
por lo tanto se agregan se agrega el prefijo y sufijo pero no hay manera de cambiar el nombre del archivo temporal que crea el sistema operativo:
Answered by Jorgesys on December 24, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP