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