Using the File Storage Provider (C#Bot)

Configuration settings for the file upload behaviour in C#Bot


Introduction

When using the file or image attributes in a model for C#Bot it is important to understand how the files are stored.

File Storage Providers

When a file is stored by C#Bot, the content will not be saved to the database and instead, saved using a File Storage Provider. The provider which is used can be configured in your appsettings file. A file system provider is an abstraction over any system that can store files. This includes sources such as a network attached drive, a cloud based blob storage service or even an in memory dictionary.

Currently there are two different file storage providers in C#Bot:

  1. File System (Default)
  2. Amazon S3

More file system providers will be added over time and can be created by implementing the IUploadStorageProvider interface on the serverside, and updating the configuration. Creating a custom provider will be covered more in another article.

Configuring File Storage Providers

File system providers can be configured in appsettings for a particular project. There is configuration sections for both picking which provider to use, as well as to configure individual providers. For this we will be changing appsettings.xml however, these settings can be applied in command line args or via environment variables.

Picking a provider

A storage provider can be picked by adding the following section to your appsettings.xml file. All configuration should be done in the protected region labelled Add any extra app configuration here.

<StorageProvider>
    <Provider>FILE_SYSTEM</Provider>
</StorageProvider>

This will configure the server to use the local file system for storing files. The valid values for the Provider key are FILE_SYSTEM and S3 by default. If no provider is set then FILE_SYSTEM will be used.

File System Provider Configuration

The file system storage provider supports changing the root folder to another location. By default this value will be ___data in the current working directory for the server.

<FileSystemStorageProvider>
    <RootFolder>/path/to/folder</RootFolder>
</FileSystemStorageProvider>
S3 Configuration

The S3 storage provider can be configured to change the access and secret keys, the AWS region and the S3 bucket to use. None of these values have any defaults.

Notes:

  • A list of all valid region endpoints can be found here
  • If the access and secret keys are omitted then the connection will try using instance authentication. This is useful for managing credentials inside of AWS itself.
<S3StorageProvider>
    <AccessKey>YOUR_ACCESS_KEY</AccessKey>
    <SecretKey>YOUR_SECRET_KEY</SecretKey>
    <RegionEndpoint>ap-southeast-2</RegionEndpoint>
    <BucketName>MyApplicationBucket</BucketName>
</S3StorageProvider>

Last updated: 03 June 2020


Start modelling your app today.