您好,欢迎光临本网站![请登录][注册会员]  
文件名称: c# 流断点上传
  所属分类: C#
  开发工具:
  文件大小: 206kb
  下载次数: 0
  上传时间: 2013-02-26
  提 供 者: abe****
 详细说明: 大文件上传 断点上传 客户端 /// /// 服务器端地址,部署时为Web端的地址,可以用配置文件实现 /// public static string serverPath; /// /// 上传文件(按照文件名称上传,支持断点) /// /// 待上传文件全路径 /// 上传时的流量控制,文件较大时,用于切割文件上传 /// 错误信息 /// 成功或者失败 publ ic static bool UpLoadFile(string fileName, int byteCount,out string msg) { msg = ""; bool result = true; long cruuent = GetServerFileLength(fileName); FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader bReader = new BinaryReader(fStream); long length = fStream.Length; fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1); #region 开始上传文件 try { #region 续传处理 byte[] data; if (cruuent > 0) { fStream.Seek(cruuent, SeekOrigin.Current); } #endregion #region 分割文件上传 for (; cruuent <= length; cruuent = cruuent + byteCount) { if (cruuent + byteCount > length) { data = new byte[Convert.ToInt64((length - cruuent))]; bReader.Read(data, 0, Convert.ToInt32((length - cruuent))); } else { data = new byte[byteCount]; bReader.Read(data, 0, byteCount); } try { Hashtable parms = new Hashtable(); parms.Add("fileName", fileName); parms.Add("npos", cruuent.ToString()); parms.Add("method", "SaveUpLoadFile"); byte[] byRemoteInfo = PostData(serverPath, data, parms); } catch (Exception ex) { msg = ex.ToString(); result = false; break; } #endregion } } catch (Exception ex) { throw ex; } finally { bReader.Close(); fStream.Close(); } GC.Collect(); #endregion return result; } /// /// 调用服务器端方法,或者服务器端,同名称的文件,已经上传的大小 /// /// 待上传文件全路径 /// 服务器端文件的大小,如果以前没有上传过,则返回0 private static long GetServerFileLength(string fileName) { fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1); Hashtable parms = new Hashtable(); parms.Add("fileName", fileName); parms.Add("method", "GetServerFileLength"); long length = 0; byte[] data = new byte[0]; byte[] byRemoteInfo = PostData(serverPath, data, parms); string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo); length = Convert.ToInt64(sRemoteInfo); return length; } /// /// 向服务器端提交数据 /// /// 服务器端地址 /// 要发送的数据 /// 附加参数,用URL的方式将此参数附件到地址中 /// 服务器端返回的 byte[] private static byte[] PostData(string serverURL, byte[] data, Hashtable parms) { System.Net.WebClient webClientObj = new System.Net.WebClient(); if (parms != null) { serverURL = serverURL + "?"; foreach (string key in parms.Keys) { serverURL = serverURL + key + "=" + parms[key].ToString() + "&"; } serverURL.TrimEnd('&'); } byte[] byRemoteInfo = webClientObj.UploadData(serverURL, "POST", data); return byRemoteInfo; } 接收端 /// /// 保存文件(从URL参数中获取文件名、当前指针,将文件流保存到当前指针后) /// 如果是第一次上传,则当前指针为0,代码执行与续传一样,只不过指针没有偏移 /// /// 文件名 /// 当前指针偏移 /// public int SaveUpLoadFile(string fileName, long npos) { int upLoadLength = Convert.ToInt32(HttpContext.Current.Request.InputStream.Length); string file = HttpContext.Current.Server.MapPath("/" + fileName); //string path = HttpContext.Current.Server.MapPath("/"); //fileName = path + "UpLoad\\" + fileName; FileStream fStream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite); //偏移指针 fStream.Seek(npos, SeekOrigin.Begin); //从客户端的请求中获取文件流 BinaryReader bReader = new BinaryReader(HttpContext.Current.Request.InputStream); try { byte[] data = new byte[upLoadLength]; bReader.Read(data, 0, upLoadLength); fStream.Write(data, 0, upLoadLength); return 1; } catch { //TODO 添加异常处理 } finally { //释放流 fStream.Close(); bReader.Close(); } return -1; } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 大文件上传 断点上传
 输入关键字,在本站1000多万海量源码库中尽情搜索: