coding-socks / multipart-of-madness
This package helps to integrate your library with @uppy/aws-s3-multipart
Requires
- php: ^8.0
- illuminate/filesystem: ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^9.0 || ^10.0 || ^11.0
- league/flysystem-aws-s3-v3: ^3.0
Requires (Dev)
- orchestra/testbench: ^7.3 || ^8.0 || ^9.0
- phpunit/phpunit: ^9.5 || ^10.0
This package is auto-updated.
Last update: 2024-11-19 16:53:12 UTC
README
This package helps to integrate your library with @uppy/aws-s3-multipart
.
Installation
You can easily install this package using Composer.
composer require coding-socks/multipart-of-madness
You have to install @uppy/aws-s3-multipart
to be able to use it as an uploader.
npm i -D @uppy/aws-s3-multipart
Usage
Configure Uppy with AwsS3Multipart
uploader.
uppy.use(AwsS3Multipart, { companionUrl: '/uppy', shouldUseMultipart(file) { return file.size > 10 * 1024 * 1024; } }) uppy.addPreProcessor(() => { return new Promise((resolve) => { const cookieName = window.axios.defaults.xsrfCookieName const headerName = window.axios.defaults.xsrfHeaderName /** @type {AwsS3Multipart} */ const plugin = uppy.getPlugin('AwsS3Multipart') plugin?.setOptions({ // You have to implement `cookies.read` companionHeaders: {[headerName]: cookies.read(cookieName)}, }) resolve() }) })
Configure the CORS of your S3 or S3-compatible solution. It needs to allow GET and PUT requests from your domain and expose some unsafe HTTP headers to Uppy. Example:
[ { "AllowedOrigins": ["https://my-app.com"], "AllowedMethods": ["GET", "PUT"], "MaxAgeSeconds": 3000, "AllowedHeaders": [ "Authorization", "x-amz-date", "x-amz-content-sha256", "content-type" ], "ExposeHeaders": ["ETag", "Location"] } ]
Defaults
The expiration times for the signe links is 15 minutes
.
The target filesystem disk is s3
.
The endpoint routes registered under web
route with /uppy
prefix.
Implementation
This implementation uses PutObject command instead of PostObject on
non-multipart upload request. This is only for compatibility with
Backblaze B2 and Cloudflare R2. @uppy/companion
uses PostObject.
All other routes were implemented based on @uppy/companion
.