uppy/examples/aws-nodejs/public/index.html
github-actions[bot] 96fa2a9c68
Release: uppy@3.5.0 (#4318)
| Package              | Version | Package              | Version |
| -------------------- | ------- | -------------------- | ------- |
| @uppy/audio          |   1.0.4 | @uppy/screen-capture |   3.0.2 |
| @uppy/companion      |   4.3.0 | @uppy/transloadit    |   3.1.1 |
| @uppy/core           |   3.0.6 | @uppy/xhr-upload     |   3.1.0 |
| @uppy/dashboard      |   3.2.2 | uppy                 |   3.5.0 |
| @uppy/locales        |   3.0.6 |                      |         |

- @uppy/transloadit: fix `assemblyOptions` option (Antoine du Hamel / #4316)
- meta: Remove Robodog advice, since it is deprecated (Artur Paikin)
- @uppy/dashboard: fix dashboard acquirers list (Mikael Finstad / #4306)
- @uppy/dashboard: Dashboard: disallow clicking on buttons and links in Dashboard disabled mode (Artur Paikin / #4292)
- @uppy/audio,@uppy/core,@uppy/dashboard,@uppy/screen-capture: Warn more instead of erroring (Artur Paikin / #4302)
- @uppy/locales: Update de_DE.js (Jörn Velten / #4297)
- meta: use load balancer for companion in e2e tests (Mikael Finstad / #4228)
- @uppy/companion: @uppy/companion upgrade grant dependency (Scott Bessler / #4286)
- @uppy/xhr-upload: add `'upload-stalled'` event (Antoine du Hamel / #4247)
- @uppy/locales: minor enhancements and typo fixes for the hungarian translation (KergeKacsa / #4282)
2023-02-13 18:48:25 +00:00

195 lines
7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Uppy AWS upload example</title>
<link href="https://releases.transloadit.com/uppy/v3.5.0/uppy.min.css" rel="stylesheet">
</head>
<body>
<h1>AWS upload example</h1>
<h2>AWS S3 (non multipart)</h2>
<div id="aws-non-multipart"></div>
<h2>AWS S3 multipart</h2>
<div id="aws-multipart"></div>
<script type="module">
import { Uppy, Dashboard, AwsS3Multipart, AwsS3 } from "https://releases.transloadit.com/uppy/v3.5.0/uppy.min.mjs"
{
const uppy = new Uppy()
.use(Dashboard, {
inline: true,
target: '#aws-non-multipart',
})
.use(AwsS3, {
async getUploadParameters (file) {
// Send a request to our Express.js signing endpoint.
const response = await fetch('/sign-s3', {
method: 'POST',
// Send and receive JSON.
headers: {
accept: 'application/json',
'content-type': 'application/json',
},
body: JSON.stringify({
filename: file.name,
contentType: file.type,
}),
})
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
// Parse the JSON response.
const data = await response.json()
// Return an object in the correct shape.
return {
method: data.method,
url: data.url,
fields: data.fields, // For presigned PUT uploads, this should be left empty.
// Provide content type header required by S3
headers: {
'Content-Type': file.type,
},
}
},
});
uppy.on('complete', (result) => {
console.log('Upload complete! Weve uploaded these files:', result.successful)
})
uppy.on('upload-success', (file, data) => {
console.log('Upload success! Weve uploaded this file:', file.meta['name'])
})
}
{
const uppy = new Uppy()
.use(Dashboard, {
inline: true,
target: '#aws-multipart',
})
.use(AwsS3Multipart, {
async createMultipartUpload(file, signal) {
if (signal?.aborted) {
const err = new DOMException('The operation was aborted', 'AbortError')
Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: signal.reason })
throw err
}
const metadata = {}
Object.keys(file.meta || {}).forEach(key => {
if (file.meta[key] != null) {
metadata[key] = file.meta[key].toString()
}
})
const response = await fetch('/s3/multipart', {
method: 'POST',
// Send and receive JSON.
headers: {
accept: 'application/json',
'content-type': 'application/json',
},
body: JSON.stringify({
filename: file.name,
type: file.type,
metadata,
}),
signal,
})
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
// Parse the JSON response.
const data = await response.json()
return data
},
async abortMultipartUpload (file, { key, uploadId }, signal) {
const filename = encodeURIComponent(key)
const uploadIdEnc = encodeURIComponent(uploadId)
const response = await fetch(`/s3/multipart/${uploadIdEnc}?key=${filename}`, {
method: 'DELETE',
signal,
})
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
},
async signPart (file, { uploadId, key, partNumber, signal }) {
if (signal?.aborted) {
const err = new DOMException('The operation was aborted', 'AbortError')
Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: signal.reason })
throw err
}
if (uploadId == null || key == null || partNumber == null) {
throw new Error('Cannot sign without a key, an uploadId, and a partNumber')
}
const filename = encodeURIComponent(key)
const response = await fetch(`/s3/multipart/${uploadId}/${partNumber}?key=${filename}`, { signal })
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
const data = await response.json()
return data
},
async listParts (file, { key, uploadId }, signal) {
if (signal?.aborted) {
const err = new DOMException('The operation was aborted', 'AbortError')
Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: signal.reason })
throw err
}
const filename = encodeURIComponent(key)
const response = await fetch(`/s3/multipart/${uploadId}?key=${filename}`, { signal })
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
const data = await response.json()
return data
},
async completeMultipartUpload (file, { key, uploadId, parts }, signal) {
if (signal?.aborted) {
const err = new DOMException('The operation was aborted', 'AbortError')
Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: signal.reason })
throw err
}
const filename = encodeURIComponent(key)
const uploadIdEnc = encodeURIComponent(uploadId)
const response = await fetch(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, {
method: 'POST',
headers: {
accept: 'application/json',
'content-type': 'application/json',
},
body: JSON.stringify({ parts }),
signal,
})
if (!response.ok) throw new Error('Unsuccessful request', { cause: response })
const data = await response.json()
return data
}
})
uppy.on('complete', (result) => {
console.log('Upload complete! Weve uploaded these files:', result.successful)
})
uppy.on('upload-success', (file, data) => {
console.log('Upload success! Weve uploaded this file:', file.meta['name'])
})
}
</script>
</body>
</html>