好长时间没写博客了,对最近工作中遇到的大文件上传和下载的代码贴出来和大家分享一下。

大文件的上传的和下载是C++的平台通过调用WebService实现文件上传和下载到服务器

        /// <summary>
/// 大文件文件上传
/// </summary>
/// <param name="FilePath">上传文件保存路径</param>
/// <param name="fileB">上传的二进制流</param>
public void AcceptFile(string FilePath, Byte[] fileB)
{
FileStream fStream;
//存在该文件追加,不存在创建
if (File.Exists(FilePath))
{
fStream = new FileStream(FilePath, FileMode.Append, FileAccess.Write);
}
else
{
fStream = new FileStream(FilePath, FileMode.Create, FileAccess.Write);
}
fStream.Write(fileB, , fileB.Length);//把二进制流转文化文件
fStream.Close();
}
/// <summary>
/// 从指定文件夹大文件下载
/// </summary>
/// <param name="FileName">文件名</param>
/// <param name="StartPosition">截取的开始位置</param>
/// <param name="num">调用的次数</param>
/// <param name="fileB">返回的二进制流</param>
public void DownLoadFile(string FileName, int StartPosition, int num, string FilePath, out Byte[] fileB)
{
string[] ResourceDir = Directory.GetFiles(FilePath);
Byte[] ResourceByte = { };
for (int i = ; i < ResourceDir.Length; i++)
{
FileStream fStream=new FileStream(ResourceDir[i].ToString(),FileMode.Open,FileAccess.Write);
string ResourceName = ResourceDir[i].ToString().Substring(ResourceDir[i].LastIndexOf("\\") + );
int iLen=*;//每次下载的大小,设置为1M
//找到要下载的文件
if (FileName == ResourceName)
{
if (fStream.Length - num * iLen < iLen)
{
fStream.Seek(StartPosition, );
ResourceByte = new Byte[fStream.Length - num * iLen];
fStream.Read(ResourceByte, , (int)fStream.Length - num * iLen);
}
else
{
fStream.Seek(StartPosition, );//读取二进制流的指定位置
ResourceByte = new Byte[iLen];
fStream.Read(ResourceByte, , iLen);
}
fStream.Close();
}
}
fileB = ResourceByte;
}

最新文章

  1. 创建Github远程仓库
  2. zstuoj 4243 牛吃草 ——(二分+两圆交)
  3. 示例-创建表格-指定行列&amp;删除表格的行和列
  4. 提高PHP性能的实用方法+40个技巧优化您的PHP代码
  5. 基于SXSSF (Streaming Usermodel API)的写文件
  6. char类型关联
  7. 如何查看jar包的版本号?
  8. CentOS NFS的安装配置、启动及mount挂载方法
  9. QML添加右键菜单
  10. C#实训 打字游戏
  11. HttpWebRequest在GetResponse时总是超时
  12. error C2248: “CObject::operator =”: 不可访问 private 员(于“CObject”类声明)
  13. SpringMVC 系列教程1-文件上传-配置
  14. Python3基础 用 函数递归求解 一个数字的阶乘
  15. 《Head First Java》读书笔记(1) - Java语言基础
  16. java随笔3 spring 的注入执行逻辑顺序
  17. 【python】json中字典key不可为数值型
  18. Morley&#39;s Therorem(UVA11178+几何)
  19. 函数调用运算符&quot;()&quot;
  20. pytho部分命令

热门文章

  1. 【数据处理】各门店POS销售导入
  2. theano安装
  3. 在Yii框架中使用PHPExcel
  4. Oracle表分区[转]
  5. sublime工具 插件自动补全方法
  6. 1 起步-Pro Git---VCS比较、git基本原理、git配置
  7. Azure上Linux VM DDOS攻击预防: 慢速攻击
  8. SSAS-时间维度的标准设计
  9. Apriori algorithm
  10. 打开本地STL文件并创建webgl使用的geometry