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.
Reader Level:

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.

Login to add your contents and source code to this article
comments
COMMENT USING
PREMIUM SPONSORS
Infragistics is experts in technology and design, and passionate about helping you build highly performant and stylish applications that solve problems, deliver inspiration, and maximize results.
Nevron Chart
SPONSORED BY
Nevron Diagram