Avatar billede pfp Nybegynder
01. september 2005 - 10:00 Der er 5 kommentarer og
1 løsning

Upload og uendelig løkke

Hej,

Jeg har stirret mig blind på min lille upload rutine. Der opstår en uendelig løkke, eller i hvert fald en løkke der er for lang :)

public void Upload(string filename)
        {
            try
            {
                WebClient client = new WebClient();
                client.Credentials = new NetworkCredential("myuser", "mypass");
                byte[] bytes = new byte[1024];

                Stream stream = client.OpenWrite("ftp://mysite/myfile.pdf");
                BinaryWriter writer = new BinaryWriter(stream);

                FileInfo file = new FileInfo(filename);
                long fileSize = file.Length;

                int read = 0;

               
                while (read < fileSize)
                {
                    read = file.OpenRead().Read(bytes, 0, bytes.Length);
                    writer.Write(bytes);
                }

                client.Dispose();
                stream.Flush();
                writer.Flush();
                MessageBox.Show("Filen blev uploadet.");

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

Nogen der kan spotte det?

På forhånd tak.

/pfp
Avatar billede arne_v Ekspert
01. september 2005 - 10:03 #1
ja du læser chunks af 1024 bytes ind

og så tester du om antal læste bytes (som derfor altid er 1024 eller
mindre) er mindre end den total fil størrelse

når du har læst hele filen så begynder den at læse 0 bytes og 0 er
mindre end fil længden

og så ...
Avatar billede arne_v Ekspert
01. september 2005 - 10:06 #2
den her er tit set:

        byte[] b = new byte[1000];
        int n;
        while((n = f1.Read(b, 0, b.Length)) > 0)
        {
            f2.Write(b, 0, n);
        }
Avatar billede pfp Nybegynder
01. september 2005 - 10:10 #3
Hej Arne,

Ja min kollega fangede godt lige denne:
read = file.OpenRead().Read(bytes, 0, bytes.Length);

som selvfølgelig skulle være:
read += file.OpenRead().Read(bytes, 0, bytes.Length);
Avatar billede pfp Nybegynder
01. september 2005 - 10:53 #4
Ovenstående uploader filen og destinationsfilen får den rigtige størrelse. Men den bliver på en eller anden måde corruptet, hvis jeg henter den kan jeg i hvert fald ikke læse den igen :(

Ved du om jeg kan/skal noget binary encoding? Kunne forestille mig at den evt. sender som ASCII?
Avatar billede pfp Nybegynder
01. september 2005 - 10:54 #5
Og smider du i øvrigt et svar :)
Avatar billede arne_v Ekspert
01. september 2005 - 11:21 #6
jeg er skeptisk overfor at du kalde OpenRead flere gange !

prøv med et enkelte OpenRead og så kald Read i løkken

----

og svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester