public virtual ValueResult <ChunkStatus> Post(HttpRequest request) { var chunkResult = _chunkBinder.Parse(request.Form); if (!chunkResult.Sucess) { return(ValueResult <ChunkStatus> .Failed(chunkResult.Errors)); } if (request.Files.Count != 0) { return(ValueResult <ChunkStatus> .Failed(new InvalidFileApplicationError("No file in the http request"))); } var file = request.Files[0]; var chunkUniqueNameTemp = _chunkNameGenerator.Generate(chunkResult.Result); _fileManager.Copy(file.InputStream, chunkUniqueNameTemp); //Rename when file copy is done var chunkUniqueName = _chunkNameGenerator.Generate(chunkResult.Result); _fileManager.Rename(chunkUniqueNameTemp, chunkUniqueName); if (IsFileUploadComplete(chunkResult.Result)) { MergeFile(chunkResult.Result); return(ValueResult <ChunkStatus> .Successed(ChunkStatus.Last)); } return(ValueResult <ChunkStatus> .Successed(ChunkStatus.Chunk)); }