What is @uppy/companion-client?
@uppy/companion-client is a client-side library for Uppy, a modular file uploader for web browsers. It allows you to interact with Uppy Companion, a server-side component that handles file uploads from various sources such as local disk, remote URLs, and cloud services like Google Drive, Dropbox, and Instagram.
What are @uppy/companion-client's main functionalities?
Upload Files
This feature allows you to upload files to a specified endpoint using the Companion server. The code sample demonstrates how to upload a file named 'example.txt' to a Companion server.
const { uploadFile } = require('@uppy/companion-client');
const file = new File(['content'], 'example.txt', { type: 'text/plain' });
uploadFile(file, {
endpoint: 'https://your-companion-server.com/upload',
fieldName: 'file'
}).then(response => {
console.log('File uploaded successfully:', response);
}).catch(error => {
console.error('Error uploading file:', error);
});
Generate Pre-signed URLs
This feature allows you to generate pre-signed URLs for uploading files directly to cloud storage services like Amazon S3. The code sample demonstrates how to generate a pre-signed URL for a file named 'example.txt'.
const { getPreSignedUrl } = require('@uppy/companion-client');
getPreSignedUrl('https://your-companion-server.com/s3', {
filename: 'example.txt',
contentType: 'text/plain'
}).then(response => {
console.log('Pre-signed URL:', response.url);
}).catch(error => {
console.error('Error generating pre-signed URL:', error);
});
List Files
This feature allows you to list files from a specified source, such as Google Drive or Dropbox, using the Companion server. The code sample demonstrates how to list files from Google Drive.
const { list } = require('@uppy/companion-client');
list('https://your-companion-server.com/drive').then(response => {
console.log('Files:', response.items);
}).catch(error => {
console.error('Error listing files:', error);
});
Other packages similar to @uppy/companion-client
tus-js-client
tus-js-client is a client-side library for the tus resumable upload protocol. It allows you to upload large files in chunks, resume interrupted uploads, and handle network issues. Unlike @uppy/companion-client, which is designed to work with Uppy and its Companion server, tus-js-client focuses on resumable uploads and can be used independently.
fine-uploader
Fine Uploader is a JavaScript library for file uploads that supports multiple file selection, drag-and-drop, and resumable uploads. It provides a comprehensive set of features for file uploading, including support for various cloud storage services. Compared to @uppy/companion-client, Fine Uploader offers a more extensive set of features but may require more configuration.
dropzone
Dropzone is a JavaScript library that provides drag-and-drop file uploads with image previews. It is easy to set up and use, making it a popular choice for simple file upload needs. While Dropzone offers basic file upload functionality, it lacks the advanced features and integrations provided by @uppy/companion-client.
@uppy/companion-client
Client library for communication with Companion. Intended for use in Uppy plugins.
Uppy is being developed by the folks at Transloadit, a versatile file encoding service.
Example
import Uppy from '@uppy/core'
import { Provider, RequestClient, Socket } from '@uppy/companion-client'
const uppy = new Uppy()
const client = new RequestClient(uppy, { companionUrl: 'https://uppy.mywebsite.com/' })
client.get('/drive/list').then(() => {})
const provider = new Provider(uppy, {
companionUrl: 'https://uppy.mywebsite.com/',
provider: providerPluginInstance,
})
provider.checkAuth().then(() => {})
const socket = new Socket({ target: 'wss://uppy.mywebsite.com/' })
socket.on('progress', () => {})
Installation
Unless you are writing a custom provider plugin, you do not need to install this.
$ npm install @uppy/companion-client
License
The MIT License.
3.0.1
Released: 2022-08-30
| Package | Version | Package | Version |
| ------------------------- | ------- | ------------------------- | ------- |
| @uppy/angular | 0.4.1 | @uppy/store-default | 3.0.1 |
| @uppy/audio | 1.0.1 | @uppy/store-redux | 3.0.1 |
| @uppy/aws-s3 | 3.0.1 | @uppy/svelte | 3.0.0 |
| @uppy/aws-s3-multipart | 3.0.1 | @uppy/thumbnail-generator | 3.0.1 |
| @uppy/companion | 4.0.1 | @uppy/transloadit | 3.0.1 |
| @uppy/companion-client | 3.0.1 | @uppy/tus | 3.0.1 |
| @uppy/core | 3.0.1 | @uppy/utils | 5.0.1 |
| @uppy/dashboard | 3.0.1 | @uppy/webcam | 3.1.0 |
| @uppy/react | 3.0.1 | @uppy/xhr-upload | 3.0.1 |
| @uppy/remote-sources | 1.0.1 | uppy | 3.0.1 |
- @uppy/dashboard,@uppy/webcam: add nativeCameraFacingMode to Webcam and Dashboard (Artur Paikin / #4047)
- meta: upgrade to Jest 29 (Antoine du Hamel / #4049)
- @uppy/svelte: update peer dependencies (Antoine du Hamel / #4065)
- @uppy/react: useUppy: fix unmount on NextJS dev mode (Matt Jesuele / #4062)
- @uppy/vue: fix missing component in docs (Antoine du Hamel / #4063)
- @uppy/angular: fix compiler warning (Antoine du Hamel / #4064)
- meta: improve CI npm install time (Antoine du Hamel / #4058)
- meta: example: fix Angular example package name (Antoine du Hamel / #4060)
- meta: upgrade to TypeScript 4.8 (Antoine du Hamel / #4048)
- @uppy/core,@uppy/dashboard,@uppy/thumbnail-generator: update definition type files for TS 4.8 compatibility (Antoine du Hamel / #4055)
- @uppy/transloadit: improve deprecation notice (Antoine du Hamel / #4056)
- @uppy/thumbnail-generator: fix
exifr
import (Antoine du Hamel / #4054) - @uppy/utils: fix
relativePath
when drag&dropping a folder (Antoine du Hamel / #4043) - @uppy/companion: Fix Companion license (Merlijn Vos / #4044)
- e2e: add tests for AWS (Antoine du Hamel / #3665)
- meta: Only publish Companion to Dockerhub on release (Merlijn Vos / #4037)
- meta: fix linter warnings (Antoine du Hamel / #4039)
- @uppy/utils: Post-release website fixes (Merlijn Vos / #4038)
- @uppy/angular: fix peer dependencies (Antoine du Hamel / #4035)
- meta: uppy.io homepage: Add Tus (Artur Paikin)
- meta: Fix uppy.io homepage example (Artur Paikin)