示例#1
0
        public Task SpaceUploadDataStreamAsync(ApiSession apiSession, SpaceUploadDataStreamRequest spaceUploadFileRequest, CancellationToken cancellationToken)
        {
            if (apiSession == null)
            {
                throw new ArgumentNullException(nameof(apiSession));
            }

            if (spaceUploadFileRequest == null)
            {
                throw new ArgumentNullException(nameof(spaceUploadFileRequest));
            }

            return(Wrapped(async(token) =>
            {
                Action <FileTransferProgressEventArgs> onSendProgress = (data) =>
                {
                    OnDataUploadProgress?.Invoke(this, data);
                };
                var sendStreamData = new SendFileStreamData(
                    spaceUploadFileRequest.DataStream,
                    spaceUploadFileRequest.FileName,
                    spaceUploadFileRequest.FileSize);
                var apiResult =
                    spaceUploadFileRequest.OverwriteExistingFile ?
                    await _lowLevelApiClient.WebFilesPutFileStreamAsync(apiSession, spaceUploadFileRequest.ServerFolder, sendStreamData, onSendProgress, token) :
                    await _lowLevelApiClient.WebFilesPostFileStreamAsync(apiSession, spaceUploadFileRequest.ServerFolder, sendStreamData, onSendProgress, token);
                FailIfError(apiResult);
                return Task.FromResult(0);
            }, cancellationToken, OperationType.FileTransfer));
        }
示例#2
0
        public async Task SpaceUploadFileAsync(string localFilePath, string serverFolder, string destFileName, CancellationToken cancellationToken, bool overwriteExistingFile = false)
        {
            if (!File.Exists(localFilePath))
            {
                throw new FileNotFoundException(string.Format("File '{0}' not found", localFilePath));
            }
            var fileSize = new FileInfo(localFilePath).Length;

            using (var fsSource = new FileStream(localFilePath, FileMode.Open, FileAccess.Read))
            {
                var request = new SpaceUploadDataStreamRequest
                {
                    DataStream            = fsSource,
                    FileName              = destFileName,
                    FileSize              = fileSize,
                    OverwriteExistingFile = overwriteExistingFile,
                    ServerFolder          = serverFolder
                };
                await _morphServerApiClient.SpaceUploadDataStreamAsync(_apiSession, request, cancellationToken);

                return;
            }
        }