Click here to Skip to main content
15,860,972 members
Articles / Desktop Programming / Win32

Transfer files using Web Services

Rate me:
Please Sign up or sign in to vote.
2.55/5 (18 votes)
11 Sep 2008Ms-PL 147.3K   4.2K   46   16
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.

C#
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.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)


Written By
Software Developer (Senior) www.treaple.com
China China
Treaple offshore outsourcing software services providing mobile(Pocket pc,smartphone and wince.net) software,mobile GIS(Mobile map),Desktop GIS(Desktop map), GPS,GSM Locating Services,Voip,Multimedia(Audio,Video) and web design offshore outsourcing software development services.We have developed lots of projects on Microsoft Poccket pc 5.0/6.0,smartphone 5.0/6.0 and Microsoft windows and got strong background in Microsoft MapPoint, ESRI ArcGIS, Map info,Google map etc
Our website below: http://www.szwyqz.com

Comments and Discussions

 
Questionwhy new byte[0] Pin
ccealex12-Nov-12 20:05
ccealex12-Nov-12 20:05 
hi!

i know this thread is old, but anyway ..

i'm using part of your code..., but i'm questioning why do you return "new byte[0]" instead of null ?

is there some reason for using "new byte[0]" ?

tnk's
GeneralMy vote of 1 Pin
mehul02200312-Oct-12 0:15
mehul02200312-Oct-12 0:15 
GeneralMy vote of 3 Pin
elvisanandakumar6-Mar-12 15:08
elvisanandakumar6-Mar-12 15:08 
Generalexplanation Pin
aristo-samar1-Mar-11 4:09
aristo-samar1-Mar-11 4:09 
GeneralMy vote of 1 Pin
mrbronz26-Feb-11 6:50
mrbronz26-Feb-11 6:50 
GeneralMy vote of 1 Pin
tomtom198029-Jul-09 21:49
tomtom198029-Jul-09 21:49 
GeneralThanks! Pin
Danie de Kock10-Jul-09 0:01
Danie de Kock10-Jul-09 0:01 
GeneralRe: Thanks! Pin
Johan Vorster21-Jul-09 3:35
Johan Vorster21-Jul-09 3:35 
GeneralRe: Thanks! Pin
Danie de Kock21-Jul-09 9:23
Danie de Kock21-Jul-09 9:23 
GeneralRe: Thanks! Pin
Danie de Kock21-Jul-09 9:23
Danie de Kock21-Jul-09 9:23 
GeneralRe: Thanks! Pin
Johan Vorster21-Jul-09 22:17
Johan Vorster21-Jul-09 22:17 
GeneralRe: Thanks! Pin
Danie de Kock22-Jul-09 3:27
Danie de Kock22-Jul-09 3:27 
QuestionServer app Pin
hahacasd13-Jan-09 16:42
hahacasd13-Jan-09 16:42 
GeneralMy vote of 1 Pin
valmir196913-Jan-09 3:28
professionalvalmir196913-Jan-09 3:28 
GeneralNo Explinations Pin
Harshdeep Mehta (4700787)12-Sep-08 4:15
Harshdeep Mehta (4700787)12-Sep-08 4:15 
GeneralRubbish Article Pin
Viresh Shah11-Sep-08 22:46
Viresh Shah11-Sep-08 22:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.