/// <summary> /// create a url for file upload /// </summary> /// <param name="fileInfo"></param> /// <param name="metadataContainer"></param> /// <param name="ct"></param> /// <returns></returns> public Task <Uri> Create(FileInfo fileInfo, MetadataCollection metadataContainer = null, TusRequestOption option = default, CancellationToken ct = default) { metadataContainer ??= new MetadataCollection(); if (!metadataContainer.ContainsKey(_tusClientOptions.FileNameMetadataName)) { metadataContainer[_tusClientOptions.FileNameMetadataName] = fileInfo.Name; } return(Create(fileInfo.Length, metadataContainer, option, ct)); }
/// <summary> /// upload blob; will continue from where it left off if a previous upload was already in progress /// </summary> /// <param name="uploadUrl">blob upload url</param> /// <param name="blobStream">blob stream to be uploaded; must allow Length, ReadAsync operations. Seek operation must be available for resumed uploads.</param> /// <param name="state"></param> /// <param name="option"></param> /// <param name="ct">cancellation token to stop the asynchronous action</param> /// <returns>Returns true if upload is complete; false otherwise</returns> public async Task <bool> Upload(Uri uploadUrl, Stream blobStream, object state, TusRequestOption option = default, CancellationToken ct = default) { bool uploadResult; if (option is not null && option.UploadWithStreaming) { uploadResult = await UploadWithStreamingAsync(uploadUrl, blobStream, state, option, ct); }
/// <summary> /// create a url for blob upload /// </summary> /// <param name="blobLength"></param> /// <param name="metadataContainer"></param> /// <param name="ct"></param> /// <returns></returns> public async Task <Uri> Create(long blobLength, MetadataCollection metadataContainer = null, TusRequestOption option = default, CancellationToken ct = default) { metadataContainer ??= new MetadataCollection(); var fileUrl = await _tusExtension.Creation(_tusClientOptions.TusHost, blobLength, metadataContainer.Serialize(), option, ct); return(fileUrl); }