<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        silverlight用webclient大文件上傳的實例代碼

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:40:35
        文檔

        silverlight用webclient大文件上傳的實例代碼

        silverlight用webclient大文件上傳的實例代碼:客戶端: 代碼如下: /// <summary> /// 寫入數(shù)據(jù)到流中 /// </summary> /// <param name=url></param> /// <param name=callback></param> public async
        推薦度:
        導(dǎo)讀silverlight用webclient大文件上傳的實例代碼:客戶端: 代碼如下: /// <summary> /// 寫入數(shù)據(jù)到流中 /// </summary> /// <param name=url></param> /// <param name=callback></param> public async

        客戶端:
        代碼如下:
             /// <summary>
             /// 寫入數(shù)據(jù)到流中
             /// </summary>
             /// <param name="url"></param>
             /// <param name="callback"></param>
             public async static Task<bool> Write(string url, Stream clientStream)
             {
                 if (clientStream.Length > 25*1024*1024)
                     url += "&t=1"; // 表示上傳大文件
                 try
                 {
                     Up(url, clientStream);
                     return true;
                 }
                 catch { }
                 return false;
             }
             public async static Task Up(string url, Stream sourceStream)
             {
                 var wc = new WebClient();
                 byte[] buffer = new byte[25*1024*1024];
                 int bufLen = sourceStream.Read(buffer, 0, buffer.Length);
                 if (bufLen < 1)
                 {
                     sourceStream.Close();
                     return;
                 }
                wc.WriteStreamClosed += (s, e) =>
                 {
                     if (sourceStream.CanRead)
                         Up(url, sourceStream);
                     else
                         sourceStream.Close();
                 };
                 var serverStream = await wc.OpenWriteTaskAsync(url, "POST");
                 serverStream.Write(buffer, 0, bufLen);
                 serverStream.Close();
             }

        服務(wù)端:
        代碼如下:
        private void Save()
               {
                   string data = Context.Request.QueryString["data"].Base64StringDecode("ABC");
                   if (data.IsNullOrEmpty())
                       return;
                   var m = JsonConvert.DeserializeObject<FileUploadModel>(data);
                   if (m == null)
                       return;
                   var isSplitBlock = Context.Request.QueryString["t"]=="1";   //是否分塊上傳
                   #region 保存文件
                   // 初始化目錄
                   string dirPath = Path.Combine(ConfigHelper.UploadPath, m.Dir);   // 文件保存路徑
                   if (!Directory.Exists(dirPath))
                       Directory.CreateDirectory(dirPath);
                   // 文件地址
                   string filePath = Path.Combine(dirPath, m.FileName);
                   if (!isSplitBlock)
                   {
                       if (File.Exists(filePath))
                           File.Delete(filePath);
                   }
                   int bufLen = 0;
                   byte[] buffer = new byte[4096];
                   using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                   {
                       fs.Seek(0, SeekOrigin.End);
                       // 寫入原文件
                       Stream sr = Context.Request.InputStream;
                       while ((bufLen = sr.Read(buffer, 0, buffer.Length)) > 0)
                           fs.Write(buffer, 0, bufLen);
                       sr.Close();
                       sr.Dispose();
                       // 縮略圖
                       try
                       {
                           if (!m.NeedThumbnail)
                               return;
                           dirPath = Path.Combine(dirPath, "Small");
                           if (!Directory.Exists(dirPath))
                               Directory.CreateDirectory(dirPath);
                           filePath = Path.Combine(dirPath, m.FileName);
                           if (File.Exists(filePath))
                               File.Delete(filePath);
                           using (var pic = GetThumbnail(fs, 300, 300))
                           {
                               pic.Save(filePath);
                           }
                       }
                       catch { }
                   }
                   #endregion
                   #region 刪除原文件
                   // 刪除原文件
                   if (m.OldFilePath.IsNullOrEmpty())
                   {
                       return;
                   }
                   try
                   {
                       filePath = Path.Combine(ConfigHelper.UploadPath, m.OldFilePath);
                       if (File.Exists(filePath))
                           File.Delete(filePath);
                       if (m.NeedThumbnail)
                       {
                           filePath = Path.Combine(ConfigHelper.UploadPath, m.OldThumbnailImagePath);
                           if (File.Exists(filePath))
                               File.Delete(filePath);
                       }
                   }
                   catch (Exception ex)
                   {
                   }
                   #endregion
               }

        分塊上傳注意點:每塊流保存完以后再去讀取下以塊的數(shù)據(jù),不然會多塊一起過來會前面的塊流數(shù)據(jù)會被后面的塊流數(shù)據(jù)覆蓋;
        注重過程的同時注重結(jié)果

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        silverlight用webclient大文件上傳的實例代碼

        silverlight用webclient大文件上傳的實例代碼:客戶端: 代碼如下: /// <summary> /// 寫入數(shù)據(jù)到流中 /// </summary> /// <param name=url></param> /// <param name=callback></param> public async
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人免费AA片在线观看| 6080午夜一级毛片免费看 | 国国内清清草原免费视频99| 亚洲成a人片在线观看日本| 一区二区免费国产在线观看 | 亚洲色欲久久久综合网| 国产特黄一级一片免费| 亚洲色婷婷综合开心网| 波霸在线精品视频免费观看| 亚洲自偷自偷图片| 91大神在线免费观看| 亚洲男人的天堂在线| 日韩av无码成人无码免费| 亚洲人AV在线无码影院观看| 国产精品无码一二区免费| 美女羞羞喷液视频免费| 国产又粗又猛又爽又黄的免费视频| 亚洲精品色播一区二区| 亚洲AV中文无码乱人伦| 99久久免费国产精品热| 亚洲综合久久成人69| 成人五级毛片免费播放| 污污视频网站免费观看| 亚洲色欲色欲www在线丝 | 亚洲欧洲精品视频在线观看| 黄瓜视频高清在线看免费下载| 看亚洲a级一级毛片| 国产精品亚洲玖玖玖在线观看 | 国产精品高清免费网站| 亚洲av午夜福利精品一区| 精品久久久久成人码免费动漫 | 中文字幕免费在线观看动作大片| 亚洲精品成人网站在线观看| 国产成人精品免费视频动漫 | 免费人成在线观看视频高潮| 亚洲人成777在线播放| 国产最新凸凹视频免费| 精品成人免费自拍视频| 伊人久久亚洲综合影院首页| 狠狠亚洲婷婷综合色香五月排名| 久久久久国产精品免费网站|