CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 33 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 4 su 4
Discussione:

Scaricare un file dal Server

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Aug 2013
    Località
    Siena
    Messaggi
    8
    Smartphone
    Nokia N9, Nexus 7, Zenfone 2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Question

    Scaricare un file dal Server

    Ciao a tutti,
    nella mia app ho inserito un bottone che permette di scaricare un file dal mio server. All'inizio funziona e non ci sono problemi, dopo un po' se provo a modificare il file, se premo il bottone per il download mi appare il toast del download avvenuto correttamente, ma il file è quello vecchio. Stessa situazione se elimino il file dal server!
    Il codice è questo:

    codice:
    private class DownloadTask extends AsyncTask<String, Integer, String>
        {
    
            private Context context;
            private PowerManager.WakeLock mWakeLock;
    
            public DownloadTask(Context context)
            {
                this.context = context;
            }
    
              @Override
            protected String doInBackground(String... sUrl)
            {
                InputStream input = null;
                OutputStream output = null;
                HttpURLConnection connection = null;
    
                try {
                    URL url = new URL(sUrl[0]);
                    connection = (HttpURLConnection) url.openConnection();
    
    
                    connection.connect();
    
                    // expect HTTP 200 OK, so we don't mistakenly save error report
                    // instead of the file
                    if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                        return "Server returned HTTP " + connection.getResponseCode()
                                + " " + connection.getResponseMessage();
                    }
    
                    // this will be useful to display download percentage
                    // might be -1: server did not report the length
                    int fileLength = connection.getContentLength();
    
                    // download the file
                    input = connection.getInputStream();
                    output = new FileOutputStream("/sdcard/LabTracKin/analisi");
    
                    byte data[] = new byte[4096];
                    long total = 0;
                    int count;
                    while ((count = input.read(data)) != -1) {
                        // allow canceling with back button
                        if (isCancelled()) {
                            input.close();
                            return null;
                        }
                        total += count;
                        // publishing the progress....
                        if (fileLength > 0) // only if total length is known
                            publishProgress((int) (total * 100 / fileLength));
                        output.write(data, 0, count);
                    }
                } catch (Exception e) {
                    return e.toString();
                } finally {
                    try {
                        if (output != null)
                            output.close();
                        if (input != null)
                            input.close();
                    } catch (IOException ignored) {
                    }
    
                    if (connection != null)
                        connection.disconnect();
                }
                return null;
            }
    
              @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // take CPU lock to prevent CPU from going off if the user
                // presses the power button during download
                PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
                mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                        getClass().getName());
                mWakeLock.acquire();
                mProgressDialog.show();
            }
    
              @Override
            protected void onProgressUpdate(Integer... progress) {
                super.onProgressUpdate(progress);
                // if we get here, length is known, now set indeterminate to false
                mProgressDialog.setIndeterminate(false);
                mProgressDialog.setMax(100);
                mProgressDialog.setProgress(progress[0]);
            }
    
              @Override
            protected void onPostExecute(String result) {
                mWakeLock.release();
                mProgressDialog.dismiss();
                if (result != null)
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(context);
                    builder.setMessage("Download error: " + result + "\n riprovare?").setPositiveButton("Si", dialogClickListener)
                            .setNegativeButton("No", dialogClickListener).show();
                }
                else
                    Toast.makeText(context,"File Scaricato", Toast.LENGTH_SHORT).show();
            }
        }

    Ho provato anche a pulire la cache in automatico ad ogni cambio activity ma il problema rimane.
    Cosa potrebbe essere?

    Grazie

  2.  
  3. #2
    Androidiano


    Registrato dal
    Feb 2015
    Messaggi
    185

    Ringraziamenti
    2
    Ringraziato 14 volte in 14 Posts
    Predefinito

    Dovresti essere più preciso riguardo l'uso che fai del file scaricato.
    Solo per non tralasciare nulla: come in Win, sai che lo stesso file scaricato nella cartella che già lo contiene provoca il rename dello stesso con l'aggiunta di 1 (poi 2,3 ecc..)?
    Intendo dire che se scarichi il file nome.txt, la seconda volta che lo scarichi sarà nome-1.txt e se analizzi name.txt troverai sempre il file vecchio sotto quel nome.

  4. #3
    Baby Droid


    Registrato dal
    Aug 2013
    Località
    Siena
    Messaggi
    8
    Smartphone
    Nokia N9, Nexus 7, Zenfone 2

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Prima di scaricare il file cancello quello presente sul telefono.

  5. #4
    Androidiano


    Registrato dal
    Feb 2015
    Messaggi
    185

    Ringraziamenti
    2
    Ringraziato 14 volte in 14 Posts
    Predefinito

    ok, era solo per fugare il dubbio

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy