public async Task <HttpReponseViewModel <GenerateMD5ToBurstResViewModel> > GetMD5ToBurstData(Guid id)
        {
            HttpReponseViewModel <GenerateMD5ToBurstResViewModel> res = new HttpReponseViewModel <GenerateMD5ToBurstResViewModel>();
            var t = await _baseDomain.GetEntity(id);

            if (t != null)
            {
                var filePath = t.RelationFilePath;
                var fileName = t.FileName + "." + t.FileExt;
                var len      = FileUtil.GetLength(filePath);
                res.Data = new GenerateMD5ToBurstResViewModel()
                {
                    Identifier  = FileUploadUtil.GetMD5HashFromFile(filePath),
                    TotalSize   = len,
                    FilePathUrl = filePath,
                    FileName    = fileName,
                    FileRanges  = GetFileRangeData(len)
                };
            }
            else
            {
                res.Data    = null;
                res.Message = "该文件不存在";
            }
            res.Code       = 200;
            res.ResultSign = Core.Enum.ResultSign.Info;
            return(res);
        }
        public bool VaildMergeFile(FileUploadReqViewModel chunkFile)
        {
            var clientFileName = chunkFile.FileName;
            // 文件字节总数
            var fileTotalSize   = chunkFile.TotalSize;
            var targetFile      = new FileInfo(chunkFile.RelativePath);
            var streamTotalSize = targetFile.Length;

            try
            {
                if (streamTotalSize != fileTotalSize)
                {
                    throw new Exception("[" + clientFileName + "]文件上传时发生损坏,请重新上传");
                }

                // 对文件进行 MD5 唯一验证
                var identifier = chunkFile.Identifier;
                var fileMd5    = FileUploadUtil.GetMD5HashFromFile(chunkFile.RelativePath);
                if (!fileMd5.Equals(identifier))
                {
                    throw new Exception("[" + clientFileName + "],文件MD5值不对等");
                }
                return(true);
            }
            catch (Exception ex)
            {
                // 删除本地错误文件
                File.Delete(chunkFile.RelativePath);
                return(false);
            }
        }
        public async Task <HttpReponseViewModel <GenerateMD5ToBurstResViewModel> > GetMD5ToBurstData(string filePath)
        {
            filePath = @"D:\Files\BI_V2.0.zip";
            //filePath = @"D:\Files\Files.zip";
            HttpReponseViewModel <GenerateMD5ToBurstResViewModel> res = new HttpReponseViewModel <GenerateMD5ToBurstResViewModel>();

            return(await Task.Run(() =>
            {
                long len = FileUtil.GetLength(filePath);
                res.Code = 20000;
                res.Data = new GenerateMD5ToBurstResViewModel()
                {
                    Identifier = FileUploadUtil.GetMD5HashFromFile(filePath),
                    TotalSize = len,
                    FileName = filePath,
                    FileRanges = _downloadServices.GetFileRangeData(len)
                };
                return res;
            }));
        }
        /// <summary>
        /// 文件检查
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public HttpReponseViewModel <List <int> > CheckFileState(HttpRequest request)
        {
            FileUploadReqViewModel fileUpload = new FileUploadReqViewModel();

            if (request.Query.Count() > 0)
            {
                foreach (var item in request.Query.ToList())
                {
                    if (item.Key == "chunkNumber")
                    {
                        fileUpload.ChunkNumber = Convert.ToInt32(item.Value);
                    }
                    if (item.Key == "chunkSize")
                    {
                        fileUpload.ChunkSize = Convert.ToInt32(item.Value);
                    }
                    if (item.Key == "currentChunkSize")
                    {
                        fileUpload.CurrentChunkSize = Convert.ToInt32(item.Value);
                    }
                    if (item.Key == "totalSize")
                    {
                        fileUpload.TotalSize = Convert.ToInt32(item.Value);
                    }
                    if (item.Key == "identifier")
                    {
                        fileUpload.Identifier = item.Value;
                    }
                    if (item.Key == "filename")
                    {
                        fileUpload.FileName = item.Value;
                    }
                    if (item.Key == "relativePath")
                    {
                        fileUpload.RelativePath = item.Value;
                    }
                    if (item.Key == "totalChunks")
                    {
                        fileUpload.TotalChunks = Convert.ToInt32(item.Value);
                    }
                    if (item.Key == "fileExt")
                    {
                        fileUpload.FileExt = item.Value;
                    }
                    if (item.Key == "fileType")
                    {
                        fileUpload.FileType = item.Value;
                    }
                    if (item.Key == "fileCategory")
                    {
                        fileUpload.FileCategory = item.Value;
                    }
                }
            }
            var webRoot = AppConfigUtil.FilePath;

            FileUploadResViewModel fileUploadRes = new FileUploadResViewModel();

            fileUploadRes.FState = 0;//新文件

            //状态
            var        fstate       = 0;
            List <int> uploadedList = new List <int>();

            var md5Folder = FileUploadUtil.GetFileMd5Folder(webRoot, fileUpload.Identifier);

            //判断这个md5临时文件夹存不存在  存在证明可以用断点续传 返回已经上传分片文件
            if (Directory.Exists(md5Folder))
            {
                fstate = 1;//可以断点续传
                //删除最后一块分片  防止出现破损
                uploadedList = FileUploadUtil.DelLastSourceFileRef(md5Folder);
            }
            else
            {
                //判断改文件存不存在
                var path = FileUploadUtil.GetPath(webRoot) + fileUpload.FileName;
                if (FileUtil.IsExistFile(path))
                {
                    //判断该文件是不是已经上传过了  上传过了就秒传  直接拿已经存在的地址url
                    var fileMd5 = FileUploadUtil.GetMD5HashFromFile(path);
                    if (fileMd5.Equals(fileUpload.Identifier))
                    {
                        fstate = 2;//已经存在该文件
                        fileUploadRes.FilePathUrl = path;
                    }
                }
            }
            return(new HttpReponseViewModel <List <int> >
            {
                Code = 200,
                Data = uploadedList,
                Flag = true,
                ResultSign = (ResultSign)fstate
            });
        }