Avatar billede bjarnefilm Juniormester
04. januar 2012 - 19:58 Der er 9 kommentarer og
1 løsning

Flyt en fil fra harddisk til server.

I spørgsmålet bruges et password. Password er krypterer som asd12asd. Jeg kan selvfølgelig ikke skrive det rigtige passsword.


Jeg har en knap på en form. Knappen hedder: "Tryk her. Så flytter du sommerhus kalenderen fra din egen harddisk til serveren." Her er koden bag knappen:

private void button2_Click(object sender, EventArgs e)
        {
            // Flyt kalenderen fra harddisk til server.
            // Fra
            string fra = "C:\\sombok\\som_kalender_2012.txt";
            // Til
           
            string til = "http://www.broma.dk:asd12asd@broma.dk/sommerhus/som_kalender_2012.txt";
           
            try
            {
                WebClient Client = new WebClient();
                Client.UploadFile( til, fra ) ;

                // Melder her.
                // Brødtekst
                string bt = "Kalenderen er flyttet til serveren.\nMelder K10.";
                // Overskrift
                string os = "Melder.";
                MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                // Fejl meddelelse her.
                // Brødtekst
                string bt = "Kalenderen er ikke flyttet til serveren.\nFejl K10.";
                // Overskrift
                string os = "Fejlmeddelse.";
                MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

Problemet er, at den melder der hedder K10 kommer frem på skærmen, men filen bliver ikke flyttet.
Avatar billede bjarnefilm Juniormester
04. januar 2012 - 20:00 #1
Der er en fejl et sted. Det er også forkert når melder K10 kommer. Filen bliver ikke flyttet. Så skal fejl K10 komme.

MVH
Bjarne
Avatar billede arne_v Ekspert
04. januar 2012 - 20:22 #2
Du kan ikke lave POST til en tekst fil !?!?

Du skal lave POST til et upload script !
Avatar billede bjarnefilm Juniormester
04. januar 2012 - 20:30 #3
Det er ikke det rigtige password.
Jeg skal lige på google og se hvad post er for noget.
Avatar billede bjarnefilm Juniormester
04. januar 2012 - 20:53 #4
Jeg har prøvet noget nyt:


        private void button6_Click(object sender, EventArgs e) //Test
        {
            // Koden er taget fra
            // http://msdn.microsoft.com/en-us/library/system.net.webclient.uploadfile(v=vs.71).aspx
       
            Console.Write("\nPlease enter the URL to post data to : ");
            String uriString = "http://www.broma.dk/sommerhus/som_kalender_2012.txt" ;

            // Create a new WebClient instance.
            WebClient myWebClient = new WebClient();

            Console.WriteLine("\nPlease enter the fully qualified path of the file to be uploaded to the URL");
            string fileName = "C:\\sombok\\som_kalender_2012.txt" ;

            Console.WriteLine("Uploading {0} to {1} ...",fileName,uriString);                       
            // Upload the file to the URL using the HTTP 1.0 POST.
            byte[] responseArray = myWebClient.UploadFile(uriString,"POST",fileName);

            // Decode and display the response.
            Console.WriteLine("\nResponse Received.The contents of the file uploaded are: \n{0}",Encoding.ASCII.GetString(responseArray));
        }

Desværre virker det ikke. Filen bliver ikke gemt på serveren.
Avatar billede Syska Mester
04. januar 2012 - 22:10 #5
Jeg kan gentage hvad Arne_v sagde ... du kan ikke lave post til en txt fil på serveren.

Serveren er en dum http server. Du skal have et server side script som tager imod dit http post upload du prøver at lave.

mvh
Avatar billede bjarnefilm Juniormester
04. januar 2012 - 22:14 #6
Jeg har fået det til at virke.
Her er koden:

    private void button6_Click(object sender, EventArgs e) //Test
        // public void UploadFile(string _FileName, string _UploadPath, string _FTPUser, string _FTPPass).
        {
            // Koden er taget fra
            // http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Upload-file-to-FTP-Server.html
       
            // <summary>.
            // Methods to upload file to FTP Server.

            // Ssummary.
            // _FileName = local source file name.
            // _UploadPath = FTP path including Host name.
            // _FTPUser = FTP login username.
            // _FTPPass  = FTP login password.

            string _FileName = "C:\\sombok\\som_kalender_2012.txt" ;
            string _UploadPath = "ftp://broma.dk/public_html/sommerhus/som_kalender_2012.txt" ;
            string _FTPUser = "broma.dk" ;
            string _FTPPass = "asd12asd" ;


            System.IO.FileInfo _FileInfo = new System.IO.FileInfo(_FileName);

            // Create FtpWebRequest object from the Uri provided.
            System.Net.FtpWebRequest _FtpWebRequest = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(new Uri(_UploadPath));
   
            // Provide the WebPermission Credintials.
            _FtpWebRequest.Credentials = new System.Net.NetworkCredential(_FTPUser, _FTPPass);
   
            // By default KeepAlive is true, where the control connection is not closed
            // after a command is executed..
            _FtpWebRequest.KeepAlive = false;
   
            // set timeout for 20 seconds.
            _FtpWebRequest.Timeout = 20000;
   
            // Specify the command to be executed..
            _FtpWebRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
   
            // Specify the data transfer type..
            _FtpWebRequest.UseBinary = true;
   
            // Notify the server about the size of the uploaded file.
            _FtpWebRequest.ContentLength = _FileInfo.Length;
   
            // The buffer size is set to 2kb.
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
   
            // Opens a file stream (System.IO.FileStream) to read the file to be uploaded.
            System.IO.FileStream _FileStream = _FileInfo.OpenRead();
   
            try
            {
                // Stream to which the file to be upload is written.
                System.IO.Stream _Stream = _FtpWebRequest.GetRequestStream();
       
                // Read from the file stream 2kb at a time.
                int contentLen = _FileStream.Read(buff, 0, buffLength);
       
                // Till Stream content ends.
                while (contentLen != 0)
                {
                    // Write Content from the file stream to the FTP Upload Stream.
                    _Stream.Write(buff, 0, contentLen);
                    contentLen = _FileStream.Read(buff, 0, buffLength);
                }
                // Close the file stream and the Request Stream.
                _Stream.Close();
                _Stream.Dispose();
                _FileStream.Close();
                _FileStream.Dispose();
            }
            catch (Exception ex)
            {
            MessageBox.Show(ex.Message, "Upload Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

Koden stod pænt indrykket da jeg copyede, men efter paste er det rodet.
Jeg håber det kan læses.
Som tidligere sagt har jeg ikke skrevet det rigtige password.

Alle der har brugt tid på det, smid et svar, så giver jeg point.

MVH
Bjarne
Avatar billede Syska Mester
04. januar 2012 - 22:18 #7
Ingen point her ... har ikke lavet noget.
Avatar billede bjarnefilm Juniormester
04. januar 2012 - 23:02 #8
Lukketid.
arne_v får ikke point. Han har så mange i forvejen.
Nu har jeg lært, at der er forskel på post og ftp.
MVH
Bjarne
Avatar billede Syska Mester
05. januar 2012 - 00:39 #9
Du har lært der er forskel på http og ftp.

http har en del httpverbs : http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

De mest anvendte er: GET, PUT, POST.

PUT og POST er form data som sendes med hhv i url og body.

GET er når en url tastes ind direkte i browseren. Ingen skrivning.
Avatar billede arne_v Ekspert
05. januar 2012 - 02:51 #10
PUT data er i body ikke i URL.
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