Limit size of uploaded files

This commit is contained in:
richard-dds 2019-08-16 13:30:03 -04:00
parent 7f477ec034
commit db73a12e95
3 changed files with 22 additions and 5 deletions

View File

@ -46,9 +46,9 @@ export default {
return {
hasInitialData: !!this.initialData,
attachment: this.initialData || null,
showErrors: this.initialErrors,
changed: false,
uploadError: null,
uploadError: false,
sizeError: false,
}
},
@ -63,15 +63,22 @@ export default {
methods: {
addAttachment: async function(e) {
this.clearErrors()
const file = e.target.files[0]
if (file.size > 64000000) {
this.sizeError = true
return
}
const response = await this.uploader.upload(file, this.objectName)
if (response.ok) {
this.attachment = e.target.value
this.$refs.attachmentFilename.value = file.name
this.$refs.attachmentObjectName.value = this.objectName
this.$refs.attachmentInput.disabled = true
} else {
this.showErrors = true
this.uploadError = true
}
@ -91,8 +98,7 @@ export default {
this.$refs.attachmentInput.value = null
this.$refs.attachmentInput.disabled = false
}
this.showErrors = false
this.uploadError = false
this.clearErrors()
this.changed = true
emitEvent('field-change', this, {
@ -101,6 +107,10 @@ export default {
watch: this.watch,
})
},
clearErrors: function() {
this.uploadError = false
this.sizeError = false
}
},
computed: {
@ -115,5 +125,8 @@ export default {
hideInput: function() {
return this.hasInitialData && !this.changed
},
showErrors: function() {
return (!this.changed && this.initialErrors) || this.uploadError || this.sizeError
}
},
}

View File

@ -46,6 +46,9 @@
<template v-if="uploadError">
<span class="usa-input__message">{{ "forms.task_order.upload_error" | translate }}</span>
</template>
<template v-if="sizeError">
<span class="usa-input__message">{{ "forms.task_order.size_error" | translate }}</span>
</template>
{% for error, error_messages in field.errors.items() %}
<span class="usa-input__message">{{error_messages[0]}}</span>
{% endfor %}

View File

@ -156,6 +156,7 @@ forms:
length_error: Filename may be no longer than 100 characters.
task_order:
upload_error: There was an error uploading your file. Please try again. If you encounter repeated problems uploading this file, please contact CCPO.
size_error: The file you have selected is too large. Please choose a file no larger than 64MB.
app_migration:
both: 'Yes, migrating from both an on-premise data center <strong>and</strong> another cloud provider'
cloud: 'Yes, migrating from another cloud provider'