Companion
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
Install
npm install @uppy/companion
Usage
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:
Plug to already existing 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'}))
...
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)
Run as standalone server
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 gtihub and want to run it as a standalone server, you may also run the following command from within its
directory
npm start
Run as a serverless function
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
See full documentation