Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c#] scaricare file .zip via ftp

    Salve a tutti, ho bisogno di scaricare dei file via ftp in formato .zip ma il codice che ho fatto non funziona, mi crea un file che ha più o meno il doppio della dimensione del file zip e, naturalmente, non riesco ad aprire. Qualcuno mi sa dire dove sbaglio in questo codice?

    Grazie a tutti.

    Codice PHP:
        try
        {

            
    ftp = (FtpWebRequest)WebRequest.Create(URLSITE PATH FILENAME);

            
    ftp.UseBinary true;
            
    ftp.Method WebRequestMethods.Ftp.DownloadFile;


            
    ftp.Credentials = new NetworkCredential(loginpassword);
            
    FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
          
            
    Panel1.Text "Scrittura del file " filename " in corso...";
            if (
    File.Exists(filepath))
            {

                
    File.Delete(filepath);

            }

            
    FileStream fs = new FileStream(FILEPATHFileMode.CreateNew);
            
    BinaryWriter bw = new BinaryWriter(fs); 

            while (
    response.GetResponseStream().ReadByte() != -1)
            {
                
    bw.Write(response.GetResponseStream().ReadByte());
            }

            
            
    response.Close();
            
    bw.Close();
            
    fs.Close();
            
            
    Panel1.Text "Download completato.";

            
        }
        catch (
    Exception ex)
        {
          
            
    MessageBox.Showex.Message);
            
        } 

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Secondo me, il file ha una dimensione pari alla metà del file che tenti di scaricare, e credo che il problema sia dovuto al fatto che richiami due volte ReadByte, e quindi leggi una volta il byte per verificare se procedere oppure no, e poi ne leggi un altro per salvarlo, con il risultato che ne perdi uno per strada.

    Rivedi la parte del ciclo while.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao! Ti ringrazio per la risposta, ma non ho capito cosa vuoi dire... dovrei salvare un byte si ed uno no? sono nuovo di c# e qualcosa alle volte mi sfugge.. Ti ringrazio in anticipo.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da fleone
    Ciao! Ti ringrazio per la risposta, ma non ho capito cosa vuoi dire... dovrei salvare un byte si ed uno no? sono nuovo di c# e qualcosa alle volte mi sfugge.. Ti ringrazio in anticipo.
    No, non dico che devi farlo, ma che (inavvertitamente) lo stai già facendo.

    Mi spiego: ogni volta che usi ReadByte, leggi un byte; nel tuo codice, lo usi una volta e verifichi di non essere giunto alla fine dello Stream dei dati da leggere (valore diverso da -1), mentre la seconda volta che chiami ReadByte lo scrivi... ma il primo byte lo hai perso, e questo si ripete fino alla conclusione del ciclo, con il risultato che - apparentemente, non ho provato il codice - un byte su due viene perso.

    E' più chiaro?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    uhm... già così ricevo il file 2 volte più grosso... comunque ci provo...

  6. #6
    infatti, nada,

    int c = 0;
    while (c!=-1)
    {
    c= response.GetResponseStream().ReadByte();

    bw.Write(c);
    }


    è il addirittura il triplo del file originale su web.... ppork!!!

  7. #7
    Salve, alla fine ho risolto inserendo questa classe nel progetto, magari può servire a qualcun'altro. Grazie ancora a chi ha mi ha cercato di aiutarmi.

    http://www.csharphelp.com/archives/archive9.html

    ciao e buon lavoro a chi come me 'sta lavorando!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.