Caricare file su server

di il
6 risposte

Caricare file su server

Buonasera a tutti,

ho creato un'applicazione che scarica alla partenza un file .sqlite da un determinato indirizzo internet, file sul quale poi posso lavorare tranquillamente (calcoli, modifiche ai record ecc).

L'applicazione prevede che  poi, una volta modificato, il file ritorni all'origine altrimenti dal sito web non si vedrebbero le modifiche fatte.

Come posso fare? 

Ho provato con tanti tutorial ma senza successo!

Grazie!

6 Risposte

  • Re: Caricare file su server

    17/09/2024 - vittus ha scritto:


    L'applicazione prevede che  poi, una volta modificato, il file ritorni all'origine altrimenti dal sito web non si vedrebbero le modifiche fatte.

    Come posso fare? 

    Devi fare un upload del file, o via HTTP PUT direttamente (sconsigliato), o inviando il file a una pagina lato server (PHP, ASP.NET, JSP, ecc.) che possa ricevere il file è salvarlo.

  • Re: Caricare file su server

    17/09/2024 - Alka ha scritto:


    17/09/2024 - vittus ha scritto:


    L'applicazione prevede che  poi, una volta modificato, il file ritorni all'origine altrimenti dal sito web non si vedrebbero le modifiche fatte.

    Come posso fare? 

    Devi fare un upload del file, o via HTTP PUT direttamente (sconsigliato), o inviando il file a una pagina lato server (PHP, ASP.NET, JSP, ecc.) che possa ricevere il file è salvarlo.

    Grazie della risposta,

    forse ero partito da un presupposto sbagliato, cercavo di invertire il procedimento di download (praticamente invertire l'andata in ritorno).

    Questo è il codice che uso per fare il download direttamente nella directory del database e funziona correttamente.

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
    
            try {
                URL url = new URL("https:<url>/fileSqlite.sdb");
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.setDoOutput(true);
                urlConnection.connect();
    
                String DatbasesPath = Environment.getDataDirectory() + "/data/" + getApplication().getPackageName() + "/databases/";
                File file = new File(DatbasesPath, "weewx.sdb");
                FileOutputStream fileOutput = new FileOutputStream(file);
                InputStream inputStream = urlConnection.getInputStream();
                byte[] buffer = new byte[1024];
                int bufferLength = 0;
                while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                    fileOutput.write(buffer, 0, bufferLength);
                }
                fileOutput.close();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

    Pensavo a qualcosa di simile ma con scarsi risultati!

  • Re: Caricare file su server

    18/09/2024 - vittus ha scritto:


    forse ero partito da un presupposto sbagliato, cercavo di invertire il procedimento di download (praticamente invertire l'andata in ritorno).

    Il presupposto infatti è errato: c'è molta differenza tra leggere un sito navigando (quindi scaricando) le pagine e le risorse collegate, e scriverlo ossia modificarlo.

    Ci vuole qualcosa lato server che, ricevendo il tuo file, ne faccia qualcosa, come salvarlo nel percorso dedicato, assieme ad altre operazioni accessorie.

    Se si vuole bypassare questa parte, si potrebbe (se il provider lo consente) abilitare l'accesso in scrittura via HTTP, con la possibilità di eseguire una PUT del file nel suo percorso speculare alla GET che si fa per recuperarlo, ma senza una “blindatura” (gestione utenti, credenziali, protezione, ecc.) chiunque potenzialmente potrebbe farlo (e lo farà, se ne ha la possibilità).

    Per un esempio di come fare l'upload con una pagina lato server, vedi ad esempio questa implementazione in PHP.

  • Re: Caricare file su server

    18/09/2024 - Alka ha scritto:


    18/09/2024 - vittus ha scritto:


    forse ero partito da un presupposto sbagliato, cercavo di invertire il procedimento di download (praticamente invertire l'andata in ritorno).

    Il presupposto infatti è errato: c'è molta differenza tra leggere un sito navigando (quindi scaricando) le pagine e le risorse collegate, e scriverlo ossia modificarlo.

    Ci vuole qualcosa lato server che, ricevendo il tuo file, ne faccia qualcosa, come salvarlo nel percorso dedicato, assieme ad altre operazioni accessorie.

    Se si vuole bypassare questa parte, si potrebbe (se il provider lo consente) abilitare l'accesso in scrittura via HTTP, con la possibilità di eseguire una PUT del file nel suo percorso speculare alla GET che si fa per recuperarlo, ma senza una “blindatura” (gestione utenti, credenziali, protezione, ecc.) chiunque potenzialmente potrebbe farlo (e lo farà, se ne ha la possibilità).

    Per un esempio di come fare l'upload con una pagina lato server, vedi ad esempio questa implementazione in PHP.

    Grazie mille,

     mi studerò sicuramente l'esempio, ora ho le idee un pò più chiare!

  • Re: Caricare file su server

    18/09/2024 - vittus ha scritto:


     mi studerò sicuramente l'esempio, ora ho le idee un pò più chiare!

    Ovviamente, l'upload del file non avverrà tramite form HTML, ma usando il client HTTP di Android come nel tuo esempio di codice, ma il comando sarà POST invece di GET, e dovrai includere il file.

    Lato server invece vale quanto già detto.

    P.S.: non dimenticare di inviare i dati usando il formato enctype="multipart/form-data"!

  • Re: Caricare file su server

    18/09/2024 - Alka ha scritto:


    18/09/2024 - vittus ha scritto:


     mi studerò sicuramente l'esempio, ora ho le idee un pò più chiare!

    Ovviamente, l'upload del file non avverrà tramite form HTML, ma usando il client HTTP di Android come nel tuo esempio di codice, ma il comando sarà POST invece di GET, e dovrai includere il file.

    Lato server invece vale quanto già detto.

    P.S.: non dimenticare di inviare i dati usando il formato enctype="multipart/form-data"!

    Ok grazie mille,

    mi metto all'opera!

Devi accedere o registrarti per scrivere nel forum
6 risposte