web服务中实现文件的上传
系统
1735 0
最近工作原因要用
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
{
11
try
12
{
13
//
定义并实例化一个内存流,以存放提交上来的字节数组。
14
MemoryStream memoryStream
=
new
MemoryStream(b);
15
16
//
文件存放目录
17
string
dir
=
@"
d:\pic\
"
;
18
19
//
判断文件存放目录是否存在
20
if
(
!
Directory.Exists(dir) )
21
{
22
return
false
;
23
}
24
25
//
定义实际文件对象,保存上载的文件。
26
string
fileName
=
dir
+
FileName;
27
28
//
创建文件流,要是上载的文件存在就覆盖
29
FileStream fileStream
=
new
FileStream(fileName, FileMode.Create);
30
31
//
把内内存里的数据写入文件流
32
memoryStream.WriteTo(fileStream);
33
34
//
关闭流文件
35
memoryStream.Close();
36
fileStream.Close();
37
38
fileStream
=
null
;
39
memoryStream
=
null
;
40
41
return
true
;
42
}
43
catch
( Exception ex )
44
{
45
string
s
=
ex.Message;
46
return
false
;
47
}
48
}
再到我的
Pocket PC
客户端
先引用
web
服务
http://10.10.10.191/SmartDeviceMobileReportWebService/ReportWebService.asmx
并命名为
ReportWebService
编写上传按钮事件
1
//
上传按钮事件
2
private
void
uploadbutton_Click(
object
sender, System.EventArgs e)
3
{
4
//
要上传的文件
5
string
fileFullName
=
this
.fileMsglabel.Text;
6
7
if
(
!
File.Exists(fileFullName) )
8
{
9
MessageBox.Show(
"
请选择图片
"
);
10
return
;
11
}
12
13
int
i
=
fileFullName.LastIndexOf(
"
\\
"
);
14
15
Cursor.Current
=
Cursors.WaitCursor;
16
17
try
18
{
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
36
//
开始调用web服务器上的公用方法
37
if
(
!
r.UploadFile(byteArray,fileName) )
38
{
39
MessageBox.Show(
"
数据上传失败!
"
);
40
}
41
else
42
{
43
MessageBox.Show(
"
数据上传成功!
"
);
44
}
45
46
//
关闭流文件
47
fileStream.Close();
48
fileStream
=
null
;
49
50
}
51
catch
52
{
53
MessageBox.Show(
"
数据上传失败!
"
);
54
}
55
finally
56
{
57
Cursor.Current
=
Cursors.Default;
58
}
59
}
图片效果如下:
选择文件
上传数据成功
web服务中实现文件的上传
更多文章、技术交流、商务合作、联系博主
微信扫码或搜索:z360901061
微信扫一扫加我为好友
QQ号联系: 360901061
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元