Reader Level:
ARTICLE

Transfer any files on Web services by c#

Posted by John Jiang Articles | Web Services in C# March 27, 2008
We can use Microsoft SOAP protocol to transfer any files between a client and a server.
  • 0
  • 0
  • 42400

Introduction

We can use Microsoft SOAP protocol to transfer any files between a client and a server. It's easy through firewall and also it is cross flatform.

Background

I was going to develop a mobile software for Pocket PC but I found there were not enough resouces to use on mobile operating system. Finally, I found Web services can solve the problem.

Using the code

There are two parts on the sample which includes: a Windows client and Webservice server code. Both of these source codes are listed below.

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;


namespace
www.treaple.com

{

    class TransferFile

    {

        public TransferFile() { }

 

    public string WriteBinarFile(byte[] fs, string path, string fileName)

    {

        try

        {

            MemoryStream memoryStream = new MemoryStream(fs);

            FileStream fileStream = new FileStream(path + fileName, FileMode.Create);

            memoryStream.WriteTo(fileStream);

            memoryStream.Close();

            fileStream.Close();

            fileStream = null;

            memoryStream = null;

            return "File has already uploaded successfully";

        }

        catch (Exception ex)

        {

            return ex.Message;

        }

    }

 
   
/// getBinaryFile Return array of byte which you specified


    public
byte[] ReadBinaryFile(string path,string fileName)

    {

        if (File.Exists(path + fileName))

        {

            try

            {

                ///Open and read a file‚

                FileStream fileStream = File.OpenRead(path + fileName);

                return ConvertStreamToByteBuffer(fileStream);

            }

        catch (Exception ex)

        {

            return new byte[0];

        }

    }

    else

    {

        return new byte[0];

    }

}

///
ConvertStreamToByteBuffer "Convert Stream To ByteBuffer"‚


public
byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)

{

    int b1;

    System.IO.MemoryStream tempStream = new System.IO.MemoryStream();

    while ((b1 = theStream.ReadByte()) != -1)

    {

        tempStream.WriteByte(((byte)b1));

    }

    return tempStream.ToArray();

}


using
System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;


namespace
www.treaple.com

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        //define and Initialize object

        private GetImage.Service getImage = new GetImage.Service();

        private TransferFile transferFile = new TransferFile();

        private void BtnOpen_Click(object sender, EventArgs e)

        {

            openFileDialog1.InitialDirectory = "C:/";

            openFileDialog1.Filter = "All

            Files|*.*"; //"All Files|*.*|Bitmaps|*.bmp|GIFs|*.gif|JPEGs|*.jpg";

            openFileDialog1.FilterIndex = 2;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                txtUpPath.Text = openFileDialog1.FileName;

            }

        }

        private void BtnUploadFile_Click(object sender, EventArgs e)

        {

            MessageBox.Show(getImage.UploadFile(transferFile.ReadBinaryFile(this.txtUpPath.Text,this.txtUpName.Text), 
            this
.txtUpName.Text));
       
}
       
private void BtnDownloadFile_Click(object sender, EventArgs e)

        {

            MessageBox.Show(transferFile.WriteBinarFile(getImage.DownloadFile(txtDownName.Text.Trim()),

            this.txtLocalPath.Text, this.txtLocalName.Text));

        }


        
private
void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

        {

            System.Diagnostics.Process.Start("http://www.treaple.com/bbs/index.php");

        }


       
private
void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

        {

            System.Diagnostics.Process.Start("http://www.treaple.com/Contact_Us.htm");

        }

    }

}

Server:
 

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;


namespace
www.treaple.com
 

class TransferFile

{

    TransferFile() { }

 
   
private string WriteBinarFile(byte[] fs, string path, string fileName)

    {

        try

        {

            MemoryStream memoryStream = new MemoryStream(fs);

            FileStream fileStream = new FileStream(path + fileName, FileMode.Create);

            memoryStream.WriteTo(fileStream);

            memoryStream.Close();

            fileStream.Close();

            fileStream = null;

            memoryStream = null;

            return "File has already uploaded successfully");

        }

        catch (Exception ex)

        {

            return ex.Message;

        }

    }

    /// getBinaryFile return array of byte which you specified

   
    public
byte[] ReadBinaryFile(string path,string fileName)

    {

        if(File.Exists(path + fileName))

        {

            try

            {

                ///Open and read a file

                FileStream fileStream = File.OpenRead(path + fileName);

                return ConvertStreamToByteBuffer(fileStream);

            }

            catch (Exception ex)

            {

                return new byte[0];

            }

        }

        else

        {

            return new byte[0];

        }

    }

    /// ConvertStreamToByteBuffer convert Stream To ByteBuffer


    public
byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)

    {

        int b1;

        System.IO.MemoryStream tempStream = new System.IO.MemoryStream();

        while ((b1 = theStream.ReadByte()) != -1)

        {

            tempStream.WriteByte(((byte)b1));/

        }

        return tempStream.ToArray();

    }

}

Note:

If you want to download the source code of the sample, please go to
http://www.treaple.com/bbs/thread-29-1-1.html to download it.

COMMENT USING

Trending up