日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

web服務(wù)中實現(xiàn)文件的上傳

系統(tǒng) 2009 0

?

最近工作原因要用 vs2003 來開發(fā) Pocket PC 方面的軟件 .

由于項目需要放棄了項目初期擬定的用 asp.net 移動 WEB 應(yīng)用程序的開發(fā)方式 , 而改用智能設(shè)備應(yīng)用程序來開發(fā)產(chǎn)品 .

其實智能設(shè)備應(yīng)用程序開發(fā)與 桌面應(yīng)用程序非常類似 , 也是一種 win 窗體開發(fā) .

該項目為了保持 Pocket PC 中的數(shù)據(jù)和遠(yuǎn)程服務(wù)器的數(shù)據(jù)保持一致 , 用到了 web 服務(wù)技術(shù) .

其中涉及一個圖片上傳功能的實現(xiàn) , 就是把手機拍攝的圖片及時發(fā)送到遠(yuǎn)程服務(wù)器 .

?

讓我們先建立一個 WEB 服務(wù) SmartDeviceMobileReportWebService

在其中定義一個方法 UploadFile負(fù)責(zé)接收上傳的圖片,代碼如下:

?1 ???????? /**/ /// ? <summary>
?2 ???????? /// ?上傳文件
?3 ???????? /// ? </summary>
?4 ???????? /// ? <param?name="fs"> 文件的字節(jié)數(shù)組 </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 ???????????????? // 定義并實例化一個內(nèi)存流,以存放提交上來的字節(jié)數(shù)組。
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 ???????????????? // 創(chuàng)建文件流,要是上載的文件存在就覆蓋
29 ????????????????FileStream?fileStream? = ? new ?FileStream(fileName,?FileMode.Create);
30
31 ???????????????? // 把內(nèi)內(nèi)存里的數(shù)據(jù)寫入文件流
32 ????????????????memoryStream.WriteTo(fileStream);
33
34 ???????????????? // 關(guān)閉流文件
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 服務(wù) 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 ???????????????? // 調(diào)用WEB服務(wù)
20 ????????????????ReportWebService.ReportWebService?r = new ?ReportWebService.ReportWebService();
21 ????????????
22 ???????????????? // 要上傳的文件名
23 ???????????????? string ?fileName = fileFullName.Substring(i + 1 );
24 ????????????
25 ???????????????? // 創(chuàng)建文件的實例
26 ????????????????FileInfo?f = new ?FileInfo(fileFullName);
27 ????????????
28 ???????????????? // 創(chuàng)建只讀?FileStream
29 ????????????????FileStream??fileStream? = ?f.OpenRead()?;
30 ????????????????
31 ???????????????? byte []?byteArray = ? new ? byte [f.Length];
32 ????????????????????
33 ???????????????? // 從流中讀取字節(jié)并將該數(shù)據(jù)寫入給定數(shù)組中
34 ????????????????fileStream.Read(byteArray, 0 ,Convert.ToInt32(?f.Length?));
35
36 ???????????????? // 開始調(diào)用web服務(wù)器上的公用方法
37 ???????????????? if ?(? ! r.UploadFile(byteArray,fileName)?)
38 ???????????????? {
39 ????????????????????MessageBox.Show( " 數(shù)據(jù)上傳失敗! " );
40 ????????????????}

41 ???????????????? else
42 ???????????????? {
43 ????????????????????MessageBox.Show( " 數(shù)據(jù)上傳成功! " );
44 ????????????????????????????????????}

45
46 ???????????????? // 關(guān)閉流文件
47 ????????????????fileStream.Close();
48 ????????????????fileStream = null ;
49
50 ????????????}

51 ???????????? catch
52 ???????????? {
53 ????????????????MessageBox.Show( " 數(shù)據(jù)上傳失敗! " );
54 ????????????}

55 ???????????? finally
56 ???????????? {
57 ????????????????Cursor.Current = Cursors.Default;
58 ????????????}
????
59 ????????}

圖片效果如下:



選擇文件



上傳數(shù)據(jù)成功

web服務(wù)中實現(xiàn)文件的上傳


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 巴南区| 京山县| 深泽县| 大姚县| 平潭县| 西藏| 顺昌县| 称多县| 孝感市| 墨玉县| 呼图壁县| 宜宾县| 峨眉山市| 东丰县| 凌海市| 汕尾市| 屏山县| 湟中县| 曲周县| 溧阳市| 临漳县| 赤壁市| 砚山县| 五河县| 台江县| 镇远县| 山阳县| 虹口区| 凭祥市| 浪卡子县| 临泽县| 威宁| 邯郸市| 卢龙县| 青河县| 中卫市| 越西县| 喜德县| 龙江县| 吉木萨尔县| 岫岩|