private async Task <UploadProcessingResult> ProcessChunk(HttpRequestMessage request) { //use the unique identifier sent from client to identify the file FileChunkMetaData chunkMetaData = request.GetChunkMetaData(); string filePath = Path.Combine(_uploadPath, string.Format("{0}.temp", chunkMetaData.ChunkIdentifier)); //append chunks to construct original file using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate | FileMode.Append)) { var localFileInfo = new FileInfo(LocalFileName); var localFileStream = localFileInfo.OpenRead(); await localFileStream.CopyToAsync(fileStream); await fileStream.FlushAsync(); fileStream.Close(); localFileStream.Close(); //delete chunk localFileInfo.Delete(); } return(new UploadProcessingResult() { IsComplete = chunkMetaData.IsLastChunk, FileName = OriginalFileName, LocalFilePath = chunkMetaData.IsLastChunk ? filePath : null, FileMetadata = _streamProvider.FormData }); }
private async Task <UploadProcessingResult> ProcessChunk(HttpRequestMessage request) { //use the unique identifier sent from client to identify the file FileChunkMetaData chunkMetaData = request.GetChunkMetaData(); string partPath = string.Format("{0}.part", OriginalFileName); string filePath = Path.Combine(UserLocalPath, partPath); await AppendChunkFileToFile(LocalFileName, filePath); if (chunkMetaData.IsLastChunk) { File.Move(filePath, FinalFilePath); } return(new UploadProcessingResult() { IsComplete = chunkMetaData.IsLastChunk, FileName = OriginalFileName, LocalFilePath = chunkMetaData.IsLastChunk ? FinalFilePath : null, FileMetadata = _streamProvider.FormData }); }
private Boolean FileExist(HttpRequestMessage request) { Boolean check = false; if (request.IsChunkUpload()) { FileChunkMetaData chunkMetaData = request.GetChunkMetaData(); check = chunkMetaData.IsFirstChunk; } else { check = true; } if (check) { if (File.Exists(Path.Combine(UserLocalPath, request.Content.Headers.ContentDisposition.FileName.Trim('"')))) { return(true); } } return(false); }