示例#1
0
        /// <inheritdoc />
        public async Task PutAsync(StoragePutOptions options, CancellationToken cancellationToken = default)
        {
            ValidateFileName(options.Container);
            ValidateFileName(options.FileName);

            _logger.LogDebug(
                "Writing file {FileName} to container {Container}",
                options.FileName,
                options.Container,
                options.Overwrite);

            if (options.Overwrite == false && File.Exists(GetFileLocation(options.Container, options.FileName)))
            {
                throw new IOException("File already exists");
            }

            var containerLocation = GetContainerLocation(options.Container);

            if (!Directory.Exists(containerLocation))
            {
                if (options.CreateContainerIfNotExists)
                {
                    Directory.CreateDirectory(containerLocation);
                }
                else
                {
                    throw new IOException("This container does not exist");
                }
            }

            await using var streamWriter = new StreamWriter(GetFileLocation(options.Container, options.FileName), false);
            await options.Content.CopyToAsync(streamWriter.BaseStream, cancellationToken);

            await streamWriter.FlushAsync();
        }
示例#2
0
        /// <inheritdoc />
        public Task PutAsync(StoragePutOptions options, CancellationToken cancellationToken = default)
        {
            var stream = new MemoryStream();

            options.Content.CopyTo(stream);
            _contents[GetFileKey(options.Container, options.FileName)] = stream.ToArray();
            return(Task.CompletedTask);
        }