diff --git a/js/components/upload_input.js b/js/components/upload_input.js
index 273c1d20..edf01450 100644
--- a/js/components/upload_input.js
+++ b/js/components/upload_input.js
@@ -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
}
@@ -89,9 +96,9 @@ export default {
this.attachment = null
if (this.$refs.attachmentInput) {
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, {
@@ -100,6 +107,10 @@ export default {
watch: this.watch,
})
},
+ clearErrors: function() {
+ this.uploadError = false
+ this.sizeError = false
+ },
},
computed: {
@@ -114,5 +125,12 @@ export default {
hideInput: function() {
return this.hasInitialData && !this.changed
},
+ showErrors: function() {
+ return (
+ (!this.changed && this.initialErrors) ||
+ this.uploadError ||
+ this.sizeError
+ )
+ },
},
}
diff --git a/js/lib/upload.js b/js/lib/upload.js
index 4a300b32..ff85ab4a 100644
--- a/js/lib/upload.js
+++ b/js/lib/upload.js
@@ -32,9 +32,9 @@ class AzureUploader {
options,
function(err, result) {
if (err) {
- reject(err)
+ resolve({ ok: false })
} else {
- resolve(result)
+ resolve({ ok: true })
}
}
)
diff --git a/templates/components/upload_input.html b/templates/components/upload_input.html
index a56cb0bf..a261ea21 100644
--- a/templates/components/upload_input.html
+++ b/templates/components/upload_input.html
@@ -46,6 +46,9 @@
{{ "forms.task_order.upload_error" | translate }}
+
+ {{ "forms.task_order.size_error" | translate }}
+
{% for error, error_messages in field.errors.items() %}
{{error_messages[0]}}
{% endfor %}
diff --git a/translations.yaml b/translations.yaml
index 01e6fc70..98d6c400 100644
--- a/translations.yaml
+++ b/translations.yaml
@@ -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 and another cloud provider'
cloud: 'Yes, migrating from another cloud provider'
@@ -381,7 +382,7 @@ task_orders:
pop_start: 'Period of Performance (PoP) start date'
review_button: Review task order
supporting_docs_header: Upload your supporting documentation
- supporting_docs_size_limit: Your file may not exceed 1MB
+ supporting_docs_size_limit: Your file may not exceed 64MB
supporting_docs_text: Upload a single PDF containing all relevant information.
step_5:
title: Confirm Signature