Transfer any files on Web services by c#

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 resources to use on the 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();
    }
}

 


Similar Articles