65.9K
CodeProject is changing. Read more.
Home

Transfer files using Web Services

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.55/5 (18 votes)

Sep 12, 2008

Ms-PL
viewsIcon

150284

downloadIcon

4155

We can use Microsoft SOAP protocol to transfer files between a client and a server. It's easy to do it even through a firewall, and also it's cross platform.

Introduction

We can use Microsoft SOAP protocol to transfer files between a client and a server. It's easy to do this even through a firewall, and also it's cross platform.

Background

I was going to develop a mobile software on Pocket PC, but I found there were very little resources to use on the mobile Operating System. Finally, I decided Web Services can solve the problem better.

Using the code

There are two parts on the included sample: Windows client and Web Service server code.

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");
        }

        private void linkLabel2_LinkClicked(
              object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.treaple.com");
        }
    }
}

//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();
        }
    }
}

If you have any questions about the source code, please visit www.treaple.com to contact me.