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

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;


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

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