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