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
        });
    }
Пример #2
0
        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
            });
        }
Пример #3
0
        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);
        }