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
const Uppy = require('@uppy/core')
const { Provider, RequestClient, Socket } = require('@uppy/companion-client')
const uppy = 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 --save
License
The MIT License.
1.1.0
Released: 2019-06-05
| Package | Version | Package | Version |
|-|-|-|-|
| @uppy/aws-s3-multipart | 1.1.0 | @uppy/provider-views | 1.1.0 |
| @uppy/aws-s3 | 1.1.0 | @uppy/react-native | 0.1.2 |
| @uppy/companion-client | 1.1.0 | @uppy/react | 1.1.0 |
| @uppy/companion | 1.1.0 | @uppy/redux-dev-tools | 1.1.0 |
| @uppy/core | 1.1.0 | @uppy/robodog | 1.1.0 |
| @uppy/dashboard | 1.1.0 | @uppy/status-bar | 1.1.0 |
| @uppy/drag-drop | 1.1.0 | @uppy/store-default | 1.1.0 |
| @uppy/dropbox | 1.1.0 | @uppy/store-redux | 1.1.0 |
| @uppy/file-input | 1.1.0 | @uppy/thumbnail-generator | 1.1.0 |
| @uppy/form | 1.1.0 | @uppy/transloadit | 1.1.0 |
| @uppy/golden-retriever | 1.1.0 | @uppy/tus | 1.1.0 |
| @uppy/google-drive | 1.1.0 | @uppy/url | 1.1.0 |
| @uppy/informer | 1.1.0 | @uppy/utils | 1.1.0 |
| @uppy/instagram | 1.1.0 | @uppy/webcam | 1.1.0 |
| @uppy/locales | 1.3.0 | @uppy/xhr-upload | 1.1.0 |
| @uppy/progress-bar | 1.1.0 | uppy | 1.1.0 |
- @uppy/robodog: actually support specifying Dashboard options (#1504 / @goto-bus-stop)
- @uppy/aws-s3: Do not extract keys from empty
fields
(#1569 / @alexnj) - docs: Thumbnail Generator – Update arguments in "thumbnail:generated" callback docs (#1567 / @janko)
- docs: polyfills are already included in the CDN bundle (#1576 / @arturi)
- docs: xhr-upload: Update the
upload-success
event docs (#1573 / @janko) - build: Upgrade build dependencies: Babel to v7, Eslint to v5, Jest to v24, Typescript to v3, Postcss to v7 (#1549 / @goto-bus-stop)
- build: Update iOS version in integration tests (#1548 / @goto-bus-stop)
- build: New
uploadcdn
script (#1586 / @goto-bus-stop) - @uppy/locales: Added Hungarian translations (#1580 / @nagyv)
- build: Fix tags for docker build (#1579 / @kiloreux)
- build: Fix npm and github security warnings (#1601 / @goto-bus-stop)
- build: New sync version (#1600 / @goto-bus-stop)
- @uppy/companion: set upload filename from metadata during uploads (#1587 / @ifedapoolarewaju)
- @uppy/dashboard: fix for file previews being partially invisible sometimes in safari (#1584 / @lakesare)
@uppy/dashboard: made added-files previews look more proportional (#1588 / @lakesare, @arturi)
- @uppy/dashboard, @uppy/drag-drop, @uppy/file-input: Fix/on before file added not called (#1597 / @lakesare, @arturi)
- @uppy/react: dashboard react component prop typings updated (#1598 / @sagar7993)
- @uppy/informer: Remove color-related code and docs (#1596 / @arturi)
- @uppy/companion: Add remote-url to emit-success, fix #1607 (#1608 / @Zyclotrop-j)
- @uppy/golden-retriever: Use this.opts instead of opts (#1618 / @arturi)
- @uppy/locales: Create sr_Latn_RS.js for Serbian (Latin, Serbia) (#1614 / @arturi)
- @uppy/locales: Support locale variants, see #1614 (f9f4b5d74b9b3fb2e24aaf935fed4d79ecae42ab / @kvz)
- @uppy/dashboard: made paste work while we're focused on buttons (#1619 / @lakesare)
- @uppy/companion: return mimetypes for dropbox files (#1599 / @ifedapoolarewaju)
- @uppy/locales: Add Portuguese (brazil) language pack (pt_BR) (#1621 / @willycamargo)
- website: fix demo not working in IE 11 (es5), add Dropbox too (07397ed88bed140cdca1f3cf19e2eaab2726bbb2 / @arturi)
- docs: examples: mention that you need to install & bootstrap (513ba53c378766e2d1e9c2885fd0311184b67c1d / @goto-bus-stop)
- docs: Fix error in documentation of AWS S3 Multipart::prepareUploadPart(file, partData) (c4e739b90a06499918f737c6cdcdfd9b413c69b2 / @kvz, @mattes3)
- docs: Explain how to not send any meta fields with xhr-upload (#1617 / @arturi)
- @uppy/core: use
uploadStarted: null
instead of false (#1628 / @goto-bus-stop) - @uppy/utils - made getDroppedFiles.js work for IE11, fixes #1622 (#1630 / @lakesare)
- @uppy/provider-views: make trailing slash optional when validating auth origin (#1589 / @ifedapoolarewaju)
- @uppy/drag-drop: Feature/replace dnd in drag drop package (#1565 / @lakesare)