TransWikia.com

obtener el nombre de un archivo pdf que esta en el servidor

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();
    }

One Answer

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:

introducir la descripción de la imagen aquí

Answered by Jorgesys on December 24, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP