Autore Topic: Scrivere file in una cartella remota  (Letto 733 volte)

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Scrivere file in una cartella remota
« il: 23 Maggio 2015, 16:01:36 CEST »
0
Ciao a tutti.. mi potete  dare una dritta per poter scrivere con android un file e salvarlo in una cartella remota condivisa (non dropbox o simili.. proprio una cartella condivisa con samba con username e password) in un server ubuntu? Grazie mille!

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Scrivere file in una cartella remota
« Risposta #1 il: 01 Giugno 2015, 22:22:40 CEST »
+1
Ho risolto...scrivo qui la soluzione sperando che possa essere d'aiuto ad altre persone...
innanzitutto bisogna importare la libreria jcifs (scaricandola dal sito ed importandola con Android Studio con il comando     compile files('libs/jcifs-1.3.18.jar') nella linea delle dependecies su build.gradle.

Poi nella vostra main o dove volete mettete questo:

Codice: [Seleziona]
       public void scrivi() {


        try{
        String user = "qui_il_vostro_username";
        String pass ="qui_la_password";
        String path="smb://indirizzo_ip_del_server/Id.txt";

            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", user, pass);
            SmbFile smbFile = new SmbFile(path, auth);
            SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile);
            smbfos.write(regId.getBytes());
    }catch(IOException ioe){
        //se qualcosa non va esegui questo codice
    }
    }

Ciao!

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Scrivere file in una cartella remota
« Risposta #2 il: 05 Giugno 2015, 22:24:08 CEST »
0
Ma se io invece di un indirizzo IP interno (tipo 192.168.etc etc) volessi mettere un link? tipo:
Codice: [Seleziona]
String path="smb://nomedelmiosito.it/esempio/testo.php"; ?
perchè non funziona così? è tutto oggi che ci provo in mille modi ma niente...

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:Scrivere file in una cartella remota
« Risposta #3 il: 06 Giugno 2015, 23:56:41 CEST »
0
Perchè non puoi accedere a un sito web con protocollo samba, si usa solo il protocollo http o ftp, altrimenti chiunque potrebbe accedere!
Se la mia risposta ti è utile, per favore un thanks!

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Scrivere file in una cartella remota
« Risposta #4 il: 07 Giugno 2015, 10:51:33 CEST »
0
Perdona la mia ignoranza... ma la cartella dove si trova il sito non è una semplice cartella anche? Con nome utente e password! Ok.. allora mi metterò a studiare come farlo con ftp e http.. per ora grazie per la dritta!

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:Scrivere file in una cartella remota
« Risposta #5 il: 08 Giugno 2015, 08:36:11 CEST »
0
http non ti permette di scrivere su una cartella, è solo un server web.
Devi usare ftp e fare l'upload del file già "completo" (nel senso che non ci puoi scrivere una riga alla volta!)
Se la mia risposta ti è utile, per favore un thanks!

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Scrivere file in una cartella remota
« Risposta #6 il: 09 Giugno 2015, 08:37:47 CEST »
0

Post unito: [time]09 Giugno 2015, 14:09:01 CEST[/time]
Ok...ho messo su un server FTP e modificato la mia app, con due classi: scrivi() e salva().
Il problema è che il file che viene correttamente scritto, ha come proprietario solo me, mentre invece vorrei settarlo come Everyone, perchè altrimenti la pagina php che dovrebbe leggere quel file mi da errore (impossibile leggere il file) perchè andando a vedere negli attributi del file creato mi da che solo il proprietario (me) può leggere e scrivere il file...
come posso risolvere?

Codice: [Seleziona]

    public void scrivi() {
        try {
            FileOutputStream fos = openFileOutput("Id.txt", MODE_WORLD_READABLE);
            fos.write(String.valueOf(regid).getBytes());
            fos.close();
            Log.v("Chiave salvata:", regid);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


public void salva() {

        FTPClient con = null;
        try {
            con = new FTPClient();
            con.connect("mioserver.it");

            if (con.login("username", "password")) {
                con.enterLocalPassiveMode(); // important!
                con.setFileType(FTP.BINARY_FILE_TYPE);
                String data = "/sdcard/Id.txt";

                FileInputStream in = new FileInputStream(new File(data));
                boolean result = con.storeFile("/directory/Id.txt", in);
                in.close();
                if (result) Log.v("upload result", "succeeded");
                con.logout();
                con.disconnect();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.v("Errore nell'upload!", "");
        }
    }
« Ultima modifica: 09 Giugno 2015, 14:23:22 CEST da smartgatto »

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:Scrivere file in una cartella remota
« Risposta #7 il: 09 Giugno 2015, 18:33:24 CEST »
+1
Configura il server ftp affinchè metta i permessi corretti sui file dell'utente che esegue l'upload.

I permessi dipendono dal server, non dal client.

Edit:
E poi Everyone è sbagliato a priori, come concetto; deve impostare il permesso di lettura solo al server web! ;)
Se la mia risposta ti è utile, per favore un thanks!

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Scrivere file in una cartella remota
« Risposta #8 il: 10 Giugno 2015, 09:26:41 CEST »
0
Grazie, ho cambiato local_umask nel file di configurazione del server ftp e ora funziona!