@rapidimages/storage-api-client
Version:
storage api client
66 lines (42 loc) • 1.85 kB
Markdown
[](https://github.com/feross/standard)
[](https://travis-ci.com/rapidimages/storage-api)
[](https://npmjs.org/package/@rapidimages/storage-api-client)
[](https://npmjs.org/package/@rapidimages/storage-api-client)
```js
const Client = require('@rapidimages/storage-api-client')
```
`url` base url to storage api
Returns an instance of client.
`files` as an array of either file streams in node, or a file list from a input type file / drag drop.
`options.onUploadProgress({ percentage, total, loaded, totalMB, uploadedMB, file })`
`options.onHashProgress({ file, total, loaded, percentage})`
`options.onRequest(request)`
`options.onUnknown(unknown)` contains object of files that will be uploaded to api
```js
const manifestKey = await Client('url').upload([files])
// a hash to the manifest of this upload containing all file keys
```
All files are hashed using `sha1` both in the browser and node.
Each upload will create a manifest in the following format
```js
{
"files": [
{
"size": 697,
"name": "filepath",
"key": "0d5061684f1d3c8262bfdefe5c373131a6358aba"
}
]
}
```
All files including the manifest are served using http `/get/key`
Files that are known by the server will not be uploaded again :) this is thanks to sha1 hashing.
[](LICENSE)