coding-socks/multipart-of-madness

此软件包帮助您将库与@uppy/aws-s3-multipart集成。

v0.1.1 2024-05-19 15:49 UTC

This package is auto-updated.

Last update: 2024-09-19 16:26:45 UTC


README

此软件包帮助您将库与@uppy/aws-s3-multipart集成。

安装

您可以使用Composer轻松安装此软件包。

composer require coding-socks/multipart-of-madness

您必须安装@uppy/aws-s3-multipart才能将其用作上传器。

npm i -D @uppy/aws-s3-multipart

用法

使用AwsS3Multipart上传器配置Uppy。

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()
    })
})

配置您的S3或兼容S3解决方案的CORS。它需要允许来自您的域的GET和PUT请求,并暴露一些不安全的HTTP头信息给Uppy。示例

[
	{
		"AllowedOrigins": ["https://my-app.com"],
		"AllowedMethods": ["GET", "PUT"],
		"MaxAgeSeconds": 3000,
		"AllowedHeaders": [
			"Authorization",
			"x-amz-date",
			"x-amz-content-sha256",
			"content-type"
		],
		"ExposeHeaders": ["ETag", "Location"]
	}
]

默认值

签名链接的过期时间为15分钟

目标文件系统磁盘为s3

web路由下注册的端点路由具有/uppy前缀。

实现

此实现使用PutObject命令替代非分块上传请求中的PostObject。这仅适用于与Backblaze B2Cloudflare R2的兼容性。@uppy/companion使用PostObject。

所有其他路由都是基于@uppy/companion实现的。