mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-22 09:48:06 +00:00
Merge pull request #1138 from transloadit/improvement/xhr-upload-bundle-resp
Set response in Core rather than in upload plugins
This commit is contained in:
commit
498f47ab05
5 changed files with 73 additions and 26 deletions
|
|
@ -171,7 +171,11 @@ module.exports = class AwsS3Multipart extends Plugin {
|
|||
reject(err)
|
||||
},
|
||||
onSuccess: (result) => {
|
||||
this.uppy.emit('upload-success', file, upload, result.location)
|
||||
const uploadResp = {
|
||||
uploadURL: result.location
|
||||
}
|
||||
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
|
||||
if (result.location) {
|
||||
this.uppy.log('Download ' + upload.file.name + ' from ' + result.location)
|
||||
|
|
@ -328,7 +332,11 @@ module.exports = class AwsS3Multipart extends Plugin {
|
|||
})
|
||||
|
||||
socket.on('success', (data) => {
|
||||
this.uppy.emit('upload-success', file, data, data.url)
|
||||
const uploadResp = {
|
||||
uploadURL: data.url
|
||||
}
|
||||
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -695,8 +695,12 @@ class Uppy {
|
|||
this.setState({ error: error.message })
|
||||
})
|
||||
|
||||
this.on('upload-error', (file, error) => {
|
||||
this.setFileState(file.id, { error: error.message })
|
||||
this.on('upload-error', (file, error, response) => {
|
||||
this.setFileState(file.id, {
|
||||
error: error.message,
|
||||
response
|
||||
})
|
||||
|
||||
this.setState({ error: error.message })
|
||||
|
||||
let message = this.i18n('failedToUpload', { file: file.name })
|
||||
|
|
@ -734,7 +738,7 @@ class Uppy {
|
|||
|
||||
this.on('upload-progress', this._calculateProgress)
|
||||
|
||||
this.on('upload-success', (file, uploadResp, uploadURL) => {
|
||||
this.on('upload-success', (file, uploadResp) => {
|
||||
const currentProgress = this.getFile(file.id).progress
|
||||
this.setFileState(file.id, {
|
||||
progress: Object.assign({}, currentProgress, {
|
||||
|
|
@ -742,7 +746,8 @@ class Uppy {
|
|||
percentage: 100,
|
||||
bytesUploaded: currentProgress.bytesTotal
|
||||
}),
|
||||
uploadURL: uploadURL,
|
||||
response: uploadResp,
|
||||
uploadURL: uploadResp.uploadURL,
|
||||
isPaused: false
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,11 @@ module.exports = class Tus extends Plugin {
|
|||
}
|
||||
|
||||
optsTus.onSuccess = () => {
|
||||
this.uppy.emit('upload-success', file, upload, upload.url)
|
||||
const uploadResp = {
|
||||
uploadURL: upload.url
|
||||
}
|
||||
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
|
||||
if (upload.url) {
|
||||
this.uppy.log('Download ' + upload.file.name + ' from ' + upload.url)
|
||||
|
|
@ -327,7 +331,11 @@ module.exports = class Tus extends Plugin {
|
|||
})
|
||||
|
||||
socket.on('success', (data) => {
|
||||
this.uppy.emit('upload-success', file, data, data.url)
|
||||
const uploadResp = {
|
||||
uploadURL: data.url
|
||||
}
|
||||
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
this.resetUploaderReferences(file.id)
|
||||
resolve()
|
||||
})
|
||||
|
|
|
|||
|
|
@ -232,15 +232,13 @@ module.exports = class XHRUpload extends Plugin {
|
|||
const body = opts.getResponseData(xhr.responseText, xhr)
|
||||
const uploadURL = body[opts.responseUrlFieldName]
|
||||
|
||||
const response = {
|
||||
const uploadResp = {
|
||||
status: ev.target.status,
|
||||
body,
|
||||
uploadURL
|
||||
}
|
||||
|
||||
this.uppy.setFileState(file.id, { response })
|
||||
|
||||
this.uppy.emit('upload-success', file, body, uploadURL)
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
|
||||
if (uploadURL) {
|
||||
this.uppy.log(`Download ${file.name} from ${file.uploadURL}`)
|
||||
|
|
@ -256,9 +254,7 @@ module.exports = class XHRUpload extends Plugin {
|
|||
body
|
||||
}
|
||||
|
||||
this.uppy.setFileState(file.id, { response })
|
||||
|
||||
this.uppy.emit('upload-error', file, error)
|
||||
this.uppy.emit('upload-error', file, error, response)
|
||||
return reject(error)
|
||||
}
|
||||
})
|
||||
|
|
@ -332,9 +328,16 @@ module.exports = class XHRUpload extends Plugin {
|
|||
socket.on('progress', (progressData) => emitSocketProgress(this, progressData, file))
|
||||
|
||||
socket.on('success', (data) => {
|
||||
const resp = opts.getResponseData(data.response.responseText, data.response)
|
||||
const uploadURL = resp[opts.responseUrlFieldName]
|
||||
this.uppy.emit('upload-success', file, resp, uploadURL)
|
||||
const body = opts.getResponseData(data.response.responseText, data.response)
|
||||
const uploadURL = body[opts.responseUrlFieldName]
|
||||
|
||||
const uploadResp = {
|
||||
status: data.response.status,
|
||||
body,
|
||||
uploadURL
|
||||
}
|
||||
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
socket.close()
|
||||
return resolve()
|
||||
})
|
||||
|
|
@ -399,9 +402,13 @@ module.exports = class XHRUpload extends Plugin {
|
|||
timer.done()
|
||||
|
||||
if (ev.target.status >= 200 && ev.target.status < 300) {
|
||||
const resp = this.opts.getResponseData(xhr.responseText, xhr)
|
||||
const body = this.opts.getResponseData(xhr.responseText, xhr)
|
||||
const uploadResp = {
|
||||
status: ev.target.status,
|
||||
body
|
||||
}
|
||||
files.forEach((file) => {
|
||||
this.uppy.emit('upload-success', file, resp)
|
||||
this.uppy.emit('upload-success', file, uploadResp)
|
||||
})
|
||||
return resolve()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -549,13 +549,23 @@ uppy.on('upload-progress', (file, progress) => {
|
|||
|
||||
Fired each time a single upload is completed.
|
||||
|
||||
`response` object (depending on the uploader plugin used, it might contain less info, the example is for `@uppy/xhr-upload`):
|
||||
|
||||
```js
|
||||
{
|
||||
status, // HTTP status code (0, 200, 300)
|
||||
body, // response body
|
||||
uploadURL // the file url, if it was returned
|
||||
}
|
||||
```
|
||||
|
||||
``` javascript
|
||||
uppy.on('upload-success', (file, resp, uploadURL) => {
|
||||
console.log(file.name, uploadURL)
|
||||
uppy.on('upload-success', (file, response) => {
|
||||
console.log(file.name, response.uploadURL)
|
||||
var img = new Image()
|
||||
img.width = 300
|
||||
img.alt = fileId
|
||||
img.src = uploadURL
|
||||
img.alt = file.id
|
||||
img.src = response.uploadURL
|
||||
document.body.appendChild(img)
|
||||
})
|
||||
```
|
||||
|
|
@ -579,10 +589,19 @@ Fired when Uppy fails to upload/encode the entire upload. That error is then set
|
|||
|
||||
### `upload-error`
|
||||
|
||||
Fired when an error occurs with a specific file:
|
||||
Fired each time a single upload has errored.
|
||||
|
||||
`response` object (depending on the uploader plugin used, it might contain less info, the example is for `@uppy/xhr-upload`):
|
||||
|
||||
```js
|
||||
{
|
||||
status, // HTTP status code (0, 200, 300)
|
||||
body // response body
|
||||
}
|
||||
```
|
||||
|
||||
``` javascript
|
||||
uppy.on('upload-error', (file, error) => {
|
||||
uppy.on('upload-error', (file, error, response) => {
|
||||
console.log('error with file:', file.id)
|
||||
console.log('error message:', error)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue