zoukankan      html  css  js  c++  java
  • 通过WebService跨平台上传大文件到服务器

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

    大文件的上传的和下载是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, 0, 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 = { 0 };
                for (int i = 0; i < ResourceDir.Length; i++)
                {
                    FileStream fStream=new FileStream(ResourceDir[i].ToString(),FileMode.Open,FileAccess.Write);
                    string ResourceName = ResourceDir[i].ToString().Substring(ResourceDir[i].LastIndexOf("\") + 1);
                    int iLen=1024*1024;//每次下载的大小,设置为1M
                    //找到要下载的文件
                    if (FileName == ResourceName)
                    {
                        if (fStream.Length - num * iLen < iLen)
                        {
                            fStream.Seek(StartPosition, 0);
                            ResourceByte = new Byte[fStream.Length - num * iLen];
                            fStream.Read(ResourceByte, 0, (int)fStream.Length - num * iLen);
                        }
                        else
                        {
                            fStream.Seek(StartPosition, 0);//读取二进制流的指定位置
                            ResourceByte = new Byte[iLen];
                            fStream.Read(ResourceByte, 0, iLen);
                        }
                        fStream.Close();
                    }
                }
                fileB = ResourceByte;
            }
  • 相关阅读:
    java的运行机制
    HelloWorld!
    一些简单的Dos命令
    之前自己不是很熟悉的windows快捷键
    MarkDown语法自学笔记
    Amazon Alexa 总览
    AWS Networking 总览
    用图片轻松学Docker
    实务经验分享-AWS Lambda & RDS 整合探讨
    16种设计思想
  • 原文地址:https://www.cnblogs.com/ok123/p/3407570.html
Copyright © 2011-2022 走看看