Companion is a server integration for Uppy file uploader.
It handles the server-to-server communication between your server and file storage providers such as Google Drive, Dropbox, Instagram, etc. Companion is not a target to upload files to. For this, use a https://tus.io server (if you want resumable) or your existing Apache/Nginx server (if you don't). See here for full documentation
npm install @uppy/companion
companion may either be used as pluggable express app, which you plug to your already existing server, or it may simply be run as a standalone server:
var express = require('express')
var bodyParser = require('body-parser')
var session = require('express-session')
var uppy = require('@uppy/companion')
var app = express()
app.use(bodyParser.json())
app.use(session({secret: 'some secrety secret'}))
...
// be sure to place this anywhere after app.use(bodyParser.json()) and app.use(session({...})
const options = {
providerOptions: {
google: {
key: 'GOOGLE_KEY',
secret: 'GOOGLE_SECRET'
}
},
server: {
host: 'localhost:3020',
protocol: 'http',
},
filePath: '/path/to/folder/'
}
app.use(uppy.app(options))
To enable uppy socket for realtime feed to the client while upload is going on, you call the socket
method like so.
...
var server = app.listen(PORT)
uppy.socket(server, options)
Please ensure that the required env variables are set before runnning/using companion as a standalone server. See.
$ companion
If you cloned the repo from GitHub and want to run it as a standalone server, you may also run the following command from within its directory
npm start
Companion can be deployed as a serverless function to AWS Lambda or other cloud providers through serverless
. Check this guide to get started.
After you have cloned the repo go inside examples/serverless
:
cd examples/serverless
You can enter your API Keys inside the serverless.yml
file:
INSTAGRAM_KEY: <YOUR_INSTAGRAM_KEY>
INSTAGRAM_SECRET: <YOUR_INSTAGRAM_SECRET>
When you are all set install the dependencies and deploy your function:
npm install && sls deploy