Autore Topic: Download/Upload file SQLite  (Letto 659 volte)

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Download/Upload file SQLite
« il: 05 Ottobre 2015, 10:30:51 CEST »
0
Ciao,
sto cercando di scaricare un file da un FTP e copiarlo nella memoria interna del cell.
Tutto funziona correttamente se uso file txt o mp4 ecc..., se invece uso file SQLite (.db) non scarica niente.
Il codice usato:
Codice (Java): [Seleziona]
@Override
        protected String doInBackground(String... params) {
            String result=null;
                FTPClient ftp = new FTPClient();
                OutputStream out=null;
                try {
                    ftp.connect("xxx");
                    ftp.login("xxx", "xxx");
                    ftp.enterLocalPassiveMode();
                    ftp.setFileType(FTP.BINARY_FILE_TYPE);

                    File outFile = new File("/storage/emulated/0/myFile.txt");
                    out = new BufferedOutputStream(new FileOutputStream(outFile)) ;
                    boolean okDownload = ftp.retrieveFile("/myFile.txt", out);
                        if (okDownload){
                            Log.d("TAG1", "file scaricato");
                        }
                        else Log.d("TAG1", "file non scaricato");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                finally {
                   //.....chiusura Stream FTP ecc...
                   
            return result;
        }
..........download/upload di file .db hanno forse bisogno di accorgimenti particolari?

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Download/Upload file SQLite
« Risposta #1 il: 05 Ottobre 2015, 11:54:42 CEST »
0
Ciao,
Ti dà qualche errore o semplicemente non succede niente e non copia il file?
« Ultima modifica: 05 Ottobre 2015, 11:59:06 CEST da NetGEL »

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #2 il: 05 Ottobre 2015, 12:22:21 CEST »
0
Allora, colloca il file myFile.db nella dir /storage/emulated/0/ ma risulta vuoto 0.00B (il peso del file nellìFTP è di 45K)

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Download/Upload file SQLite
« Risposta #3 il: 05 Ottobre 2015, 12:23:37 CEST »
0

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #4 il: 05 Ottobre 2015, 13:26:49 CEST »
0
Ho provato la prima soluzione proposta ma non funziona.
Nella seconda dicono che bisogna avere il root del cell per avere accesso al db....spero non sia così.

Post unito: 05 Ottobre 2015, 13:32:17 CEST
Comunque per semplicità il mio esempio prendeva il file db dall'Internal Storege del cell, che io avevo appositamente inserito, quindi in questo caso il root non c'entra.
« Ultima modifica: 05 Ottobre 2015, 13:32:17 CEST da Friz02, Reason: Merged DoublePost »

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:Download/Upload file SQLite
« Risposta #5 il: 06 Ottobre 2015, 08:29:08 CEST »
0
Io con ftp non ho problemi, quando rientro vado a controllare cosa ho fatto!
Se la mia risposta ti è utile, per favore un thanks!

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:Download/Upload file SQLite
« Risposta #6 il: 06 Ottobre 2015, 09:51:47 CEST »
0
Neanche io e non credo che un file .db possa creare problemi o sia necessario il root

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #7 il: 07 Ottobre 2015, 14:53:31 CEST »
0
Anch'io ho riguardato un po' tutto e non mi pare ci siano errori, non capisco perchè non funziona!....tu LonelyWolf come hai fatto?

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:Download/Upload file SQLite
« Risposta #8 il: 08 Ottobre 2015, 11:40:35 CEST »
0
Dunque, premesso che il codice potrebbe essere brutto (è una parte della primissima app che ho fatto), ecco come faccio io:

Prima di tutto ho usato 2 classi distinte, 1 per upload e 1 per download del db; anche io ovviamente in un async task.
L'upload/download non avviene direttamente dalla posizione del db in uso altrimenti si generano errori, ma da una copia in una cartella di backup.

Al termine corretto del download faccio visualizzare una notifica per informare che è possibile fare il ripristino del db per l'applicazione (una procedura chiude tutte le connessioni e sostituisce il db scaricato a quello in uso) la stessa procedura ma al contrario prima di fare l'upload.

Nella onPreExecute () controllo i parametri
Nella onPostExecute() mando la notifica per l'esito

Questo il download:
Codice: [Seleziona]
@Override
    protected Integer doInBackground(String... percorsi) {
        if (!parametri) {
            return 2;
        }
        FTPClient client = new FTPClient();
        FileOutputStream fis = null;
        String percorsodb = "";
        int count = percorsi.length;
        for (int i = 0; i < count; i++) {
            percorsodb = percorsi[i];
            try {
                client.connect(host);
                client.login(user,pass);
                client.setFileType(FTP.BINARY_FILE_TYPE);
                if (modopassivo) { client.enterLocalPassiveMode(); }
                if (path.length() > 1) { //se è inserito ed è diverso da "/"
                    client.changeWorkingDirectory(path);
                }
                fis = new FileOutputStream(new File(percorsodb));
                client.retrieveFile("SwimDB.db",fis);
                client.logout();
                client.disconnect();
            } catch (SocketException e) {
                return 1;
            } catch (FileNotFoundException e) {
                Simply_Toast toast = new Simply_Toast(context,(context.getString(R.string.ftp_nofile)+"\n"+e.toString()));
                return 1;
            } catch (IOException e) {
                return 1;
            }
        }
        return 0;
    }
Se la mia risposta ti è utile, per favore un thanks!

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #9 il: 08 Ottobre 2015, 12:53:57 CEST »
0
Mahhh proprio non capisco!...ho guardato bene il tuo codice è praticamente uguale al mio..... però a me non funziona, il file db copiato risulta vuoto...(0,00B).
Se al posto del file db metto un file txt, tutto funziona correttamente.....quindi il problema sembra essere il file db....è un mistero.

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:Download/Upload file SQLite
« Risposta #10 il: 08 Ottobre 2015, 14:01:22 CEST »
0
permessi del file db sul server sono corretti?
Se la mia risposta ti è utile, per favore un thanks!

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #11 il: 08 Ottobre 2015, 15:28:07 CEST »
0
Si....sono gli stessi degli altri file (appena fatta un'altra prova con un file txt e funziona)....a volte android non riesco proprio a capirlo!
Tanto per riassumere il procedimento a monte: ho creato un file db in una mia app, l'ho recuperato con l'emulatore (tramite ADM di android studio) e inserito nel FTP e poi ho il resto come da codice (uguale al tuo) per copiarlo nello storage del cell....ovviamente ho provato anche il processo contrario in upload da device a FTP ma niente!

Post unito: 08 Ottobre 2015, 15:30:05 CEST
comunque i permessi sono:
- Proprietario: lettura, scrittura, esecuzione
- Di gruppo e pubblici: lettura ed esecuzione
« Ultima modifica: 08 Ottobre 2015, 15:30:05 CEST da Friz02, Reason: Merged DoublePost »

Offline LonelyWolf

  • Utente junior
  • **
  • Post: 148
  • Respect: +12
    • Mostra profilo
    • Traversate dei laghi
  • Dispositivo Android:
    GT-I9505, ALE-L21
  • Sistema operativo:
    Windows 7 32/64
Re:Download/Upload file SQLite
« Risposta #12 il: 08 Ottobre 2015, 15:32:47 CEST »
0
Hai provare a fare il download in una cartella temporanea differente del cellulare?
magari non hai i permessi per scrivere.
Se la mia risposta ti è utile, per favore un thanks!

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #13 il: 08 Ottobre 2015, 15:40:40 CEST »
0
tipo dove?

Post unito: 08 Ottobre 2015, 15:42:15 CEST
comunque se funziona per un file txt sia in lettura che scrittura non credo ci siano problemi di permessi
« Ultima modifica: 08 Ottobre 2015, 15:42:15 CEST da Friz02, Reason: Merged DoublePost »

Offline Friz02

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s3 neo Samsung
  • Sistema operativo:
    windows 7
Re:Download/Upload file SQLite
« Risposta #14 il: 11 Ottobre 2015, 11:37:59 CEST »
0
Così per curiosità ho scaricato a mano (con FileZilla) il file .db dall'FTP, ma non sono riuscito ad aprirlo perché risulta criptato....sarà forse per questo motivo che non riesco a fare i download/upload dei file SQlite dal/al FTP?....sta diventando un incubo questa cosa!!