将文件从客户端传输到服务器

时间:2020-04-01 12:18:04

标签: c# file transfer

我得到了这些代码,当将文件从服务器传输到客户端时有效。

如何使它从客户端服务器

这是我正在玩的LAN Messenger聊天应用程序的一部分。 它有

  • 聊天
  • 文件传输
  • NAudio语音聊天

服务器

   //ftp Server
    public void beginftpserver()
    {   //start ftp server
        ftp_listener.Start();
        ftpClient = ftp_listener.AcceptTcpClient();

        NetworkWriter = new StreamWriter(ftpClient.GetStream(), Encoding.UTF8);
        NetworkStreamReader = new StreamReader(ftpClient.GetStream(), Encoding.UTF8);
        while (true)
        {
            if (ftpClient.Connected)
            {

                string data = string.Empty;

                while (!NetworkStreamReader.EndOfStream)
                {
                    data = NetworkStreamReader.ReadLine();
                    filename = data.Split('\\')[0];
                    data = data.Split('*')[1];
                    File.WriteAllBytes(filename, Convert.FromBase64String(data));

                    this.textBox1.Invoke(new MethodInvoker(delegate ()
                    {
                        string download = "file has been downloaded ... " + filename;
                        textBox1.AppendText(download + Environment.NewLine);
                    }));
                }
                NetworkStreamReader.Close();
                ftpClient.Close();
            }
        }
    }

    private void bt_ftp_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            _filePath = openFileDialog1.FileName;
            label1.Text = openFileDialog1.SafeFileName + $" \\ {openFileDialog1.SafeFileName.Split('.')[1]}";


              NetworkWriter = new StreamWriter(ftpClient.GetStream(), Encoding.UTF8);

            byte[] filebuffer = File.ReadAllBytes(_filePath);

            //converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array.
            string base64encodestr = Convert.ToBase64String(filebuffer);

            _fileContent = base64encodestr;

            NetworkWriter.Write($"{openFileDialog1.SafeFileName}\\* {_fileContent}");

            //Text = "File successfully sended.";
            this.textBox1.Invoke(new MethodInvoker(delegate ()
            {
                textBox1.AppendText("File successfully sended ... " + Environment.NewLine);
            }));
            NetworkWriter.Close();

        }
    }

客户

  //ftp
   public void beginftpClient()
    {
        ftpclient = new TcpClient();
            ftpclient.Connect("192.168.1.160", 87);

    }

    private void RecieveFile ()
    {
        string data = string.Empty;
        StreamReader NetworkStreamReader = new StreamReader(ftpclient.GetStream(), Encoding.UTF8);

        while (!NetworkStreamReader.EndOfStream)
        {
            data = NetworkStreamReader.ReadLine();
            filename = data.Split('\\')[0];
            data = data.Split('*')[1];
            File.WriteAllBytes(filename, Convert.FromBase64String(data));
        }

        this.textBox1.Invoke(new MethodInvoker(delegate ()
        {
            string download = "file has been downloaded ... " + filename;
            textBox1.AppendText(download + Environment.NewLine);
        }));

        NetworkStreamReader.Close();

    }


    //
    private void bt_ftp_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {

            _filePath = openFileDialog1.FileName;
            label1.Text = openFileDialog1.SafeFileName + $" \\ {openFileDialog1.SafeFileName.Split('.')[1]}";



NetworkWriter = new StreamWriter(ftpclient.GetStream(), Encoding.UTF8);

                byte[] filebuffer = File.ReadAllBytes(_filePath);

                //converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array.
                string base64encodestr = Convert.ToBase64String(filebuffer);

                _fileContent = base64encodestr;

                NetworkWriter.Write($"{openFileDialog1.SafeFileName}\\* {_fileContent}");

                //Text = "File successfully sended.";
                this.textBox1.Invoke(new MethodInvoker(delegate ()
                {
                    textBox1.AppendText("File successfully sended ... " + Environment.NewLine);
                }));

                NetworkWriter.Close();
            }
        }

0 个答案:

没有答案