在WebService調用WSE 2.0進行上傳~

在前一段時間,經理要求一個快速,強大的上傳功能,用了好幾個方法都不滿意.

1.HTML input type file
這個控件就不用說了....速度慢,不能續傳,上傳狀態不清晰,而已還受<httpRuntime>元素的maxRequestLength影響!默認是4M

2.WebClient
這個東西速度不怎樣,也是不能續傳....鬱悶~~

3.HttpRequest
這個我想嘗試!但覺得它的速度不會怎樣,而且跟1一樣!不好控製

4.Web Service
WebService是最後的選擇了!通過一個WebMethod,傳遞一個byte數組,起碼這樣可以續傳!然后再做一個winform,多綫程上傳.
但最終的效果不太理想,好像祇能維持30K-40K一秒!所以還是放棄了.

5.WSE 2.0
經理跟我說有一個WSE2的東西,就是Web Service Enhancements 2.0.幾天時間過了,在google,baidu搜索了一大堆垃圾.......最後找一篇文章,說WSE2.0有一個附件上傳的功能!所以就繼續努力找相關資料!而最終得齣來的結果不錯!傳送一個100M的東西平均竟然有49K一秒,很不錯吧!~?比FTP不弱,但最痲煩的一件事就是配置一個運行環境,安裝一個Microsoft WSE 2.0 SP3.msi才能好好工作,server跟client都要.


那么我就說說WebService部分的代碼!
引用Microsoft.Web.Services2.dll~在安裝目錄能夠找到!C:\Program Files\Microsoft WSE\v2.0
要導入兩個命名空間~
using Microsoft.Web.Services2.Dime;
using Microsoft.Web.Services2;

ContractedBlock.gif ExpandedBlockStart.gif Upload代碼
None.gif        [WebMethod]
None.gif        
public int Upload(string filename,long offset)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            
string path = "d:\\test\\" + filename;
InBlock.gif            
//得到當前請求的附件
InBlock.gif
            Stream mystream = RequestSoapContext.Current.Attachments[0].Stream;
InBlock.gif            
byte[] mydata = new byte[mystream.Length];
InBlock.gif            mystream.Read(mydata, 
0, mydata.Length);
InBlock.gif            mystream.Close();
InBlock.gif            
//打開文件並追加,同時設置共享讀寫權限
InBlock.gif            FileStream fin = new FileStream(path,FileMode.Append, FileAccess.ReadWrite, FileShare.ReadWrite);
InBlock.gif            fin.Seek(offset,SeekOrigin.Begin);
InBlock.gif            fin.Write(mydata,
0,mydata.Length);
InBlock.gif            fin.Close();
InBlock.gif            return mydate.Length;
ExpandedBlockEnd.gif        }

代碼都很簡單,不說其他東西了!后麵的地阯是winform的代碼!
http://yaka.cnblogs.com/archive/2006/06/04/416816.html

转载于:https://www.cnblogs.com/YaKa/archive/2006/06/04/416910.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值