最近工作原因要用vs2003来开发Pocket PC方面的软件.
由于项目需要放弃了项目初期拟定的用asp.net移动WEB应用程序的开发方式,而改用智能设备应用程序来开发产品.
其实智能设备应用程序开发与桌面应用程序非常类似,也是一种win窗体开发.
该项目为了保持Pocket PC中的数据和远程服务器的数据保持一致,用到了web服务技术.
其中涉及一个图片上传功能的实现,就是把手机拍摄的图片及时发送到远程服务器.
让我们先建立一个WEB服务SmartDeviceMobileReportWebService
在其中定义一个方法UploadFile负责接收上传的图片,代码如下:
1
/**/
/// <summary>
2
/// 上传文件
3
/// </summary>
4
/// <param name="fs">文件的字节数组</param>
5
/// <param name="FileName">文件名称</param>
6
/// <param name="content">说明</param>
7
/// <returns>是否文件上载成功</returns>
8
[WebMethod(Description
=
"
提供文件上传的方法,返回文件是否上载成功
"
)]
9
public
bool
UploadFile(
byte
[] b,
string
FileName)
10![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11
try
12![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
13
//定义并实例化一个内存流,以存放提交上来的字节数组。
14
MemoryStream memoryStream = new MemoryStream(b);
15![](/Images/OutliningIndicators/InBlock.gif)
16
//文件存放目录
17
string dir=@"d:\pic\";
18![](/Images/OutliningIndicators/InBlock.gif)
19
//判断文件存放目录是否存在
20
if ( !Directory.Exists(dir) )
21![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
22
return false;
23
}
24![](/Images/OutliningIndicators/InBlock.gif)
25
//定义实际文件对象,保存上载的文件。
26
string fileName = dir + FileName;
27![](/Images/OutliningIndicators/InBlock.gif)
28
//创建文件流,要是上载的文件存在就覆盖
29
FileStream fileStream = new FileStream(fileName, FileMode.Create);
30![](/Images/OutliningIndicators/InBlock.gif)
31
//把内内存里的数据写入文件流
32
memoryStream.WriteTo(fileStream);
33![](/Images/OutliningIndicators/InBlock.gif)
34
//关闭流文件
35
memoryStream.Close();
36
fileStream.Close();
37
38
fileStream = null;
39
memoryStream = null;
40
41
return true;
42
}
43
catch( Exception ex )
44![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
45
string s=ex.Message;
46
return false;
47
}
48
}
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
2
![](/Images/OutliningIndicators/InBlock.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
再到我的Pocket PC客户端
先引用web服务http://10.10.10.191/SmartDeviceMobileReportWebService/ReportWebService.asmx并命名为ReportWebService
编写上传按钮事件
1
//
上传按钮事件
2
private
void
uploadbutton_Click(
object
sender, System.EventArgs e)
3![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
4
//要上传的文件
5
string fileFullName=this.fileMsglabel.Text;
6
7
if ( !File.Exists(fileFullName) )
8![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
9
MessageBox.Show("请选择图片");
10
return;
11
}
12![](/Images/OutliningIndicators/InBlock.gif)
13
int i=fileFullName.LastIndexOf("\\");
14
15
Cursor.Current=Cursors.WaitCursor;
16![](/Images/OutliningIndicators/InBlock.gif)
17
try
18![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19
//调用WEB服务
20
ReportWebService.ReportWebService r=new ReportWebService.ReportWebService();
21
22
//要上传的文件名
23
string fileName=fileFullName.Substring(i+1);
24
25
//创建文件的实例
26
FileInfo f=new FileInfo(fileFullName);
27
28
//创建只读 FileStream
29
FileStream fileStream = f.OpenRead() ;
30
31
byte[] byteArray= new byte[f.Length];
32
33
//从流中读取字节并将该数据写入给定数组中
34
fileStream.Read(byteArray,0,Convert.ToInt32( f.Length ));
35![](/Images/OutliningIndicators/InBlock.gif)
36
//开始调用web服务器上的公用方法
37
if ( !r.UploadFile(byteArray,fileName) )
38![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
MessageBox.Show("数据上传失败!");
40
}
41
else
42![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
MessageBox.Show("数据上传成功!");
44
}
45![](/Images/OutliningIndicators/InBlock.gif)
46
//关闭流文件
47
fileStream.Close();
48
fileStream=null;
49![](/Images/OutliningIndicators/InBlock.gif)
50
}
51
catch
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
MessageBox.Show("数据上传失败!");
54
}
55
finally
56![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
Cursor.Current=Cursors.Default;
58
}
59
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
图片效果如下:
选择文件
上传数据成功