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;
}
}
public byte[] ReadBinaryFile(string path,string fileName)
{
if (File.Exists(path + fileName))
{
try
{
FileStream fileStream = File.OpenRead(path + fileName);
return ConvertStreamToByteBuffer(fileStream);
}
catch (Exception ex)
{
return new byte[0];
}
}
else
{
return new byte[0];
}
}
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();
}
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|*.*";
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");
}
}
}
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;
}
}
public byte[] ReadBinaryFile(string path,string fileName)
{
if (File.Exists(path + fileName))
{
try
{
FileStream fileStream = File.OpenRead(path + fileName);
return ConvertStreamToByteBuffer(fileStream);
}
catch (Exception ex)
{
return new byte[0];
}
}
else
{
return new byte[0];
}
}
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.