diff --git a/src/constants.js b/src/constants.js
index b1c84e921f..fdcc1bbc9a 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -1,3 +1,4 @@
+import { getConfig } from '@edx/frontend-platform';
export const DATE_FORMAT = 'MM/dd/yyyy';
export const TIME_FORMAT = 'HH:mm';
export const DATE_TIME_FORMAT = 'YYYY-MM-DDTHH:mm:ss\\Z';
@@ -52,7 +53,16 @@ export const DECODED_ROUTES = {
],
};
-export const UPLOAD_FILE_MAX_SIZE = 20 * 1024 * 1024; // 100mb
+// FilesUpload page - Default max size: 20MB else use env override if exists and valid number
+const DEFAULT_UPLOAD_FILE_MAX_SIZE = 20 * 1024 * 1024; // 20 MB
+
+export const getUploadFileMaxSize = () => {
+ const config = getConfig();
+ const overrideMaxFileSizeMB = parseInt(config.OVERRIDE_UPLOAD_FILE_MAX_SIZE_IN_MB, 10);
+ return !isNaN(overrideMaxFileSizeMB) && overrideMaxFileSizeMB > 0
+ ? overrideMaxFileSizeMB * 1024 * 1024
+ : DEFAULT_UPLOAD_FILE_MAX_SIZE;
+};
export const COURSE_BLOCK_NAMES = ({
chapter: { id: 'chapter', name: 'Section' },
diff --git a/src/files-and-videos/files-page/FilesPage.jsx b/src/files-and-videos/files-page/FilesPage.jsx
index 0976cc9bb6..c53f314835 100644
--- a/src/files-and-videos/files-page/FilesPage.jsx
+++ b/src/files-and-videos/files-page/FilesPage.jsx
@@ -4,6 +4,7 @@ import { useDispatch, useSelector } from 'react-redux';
import { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n';
import { CheckboxFilter, Container } from '@openedx/paragon';
import Placeholder from '../../editors/Placeholder';
+import { getUploadFileMaxSize } from '@src/constants';
import { RequestStatus } from '../../data/constants';
import { useModels, useModel } from '../../generic/model-store';
@@ -90,7 +91,8 @@ const FilesPage = ({
usageErrorMessages: errorMessages.usageMetrics,
fileType: 'file',
};
- const maxFileSize = 20 * 1048576;
+
+ const maxFileSize = getUploadFileMaxSize();
const activeColumn = {
id: 'activeStatus',
diff --git a/src/generic/modal-dropzone/ModalDropzone.jsx b/src/generic/modal-dropzone/ModalDropzone.jsx
index 8133910785..a337308ffa 100644
--- a/src/generic/modal-dropzone/ModalDropzone.jsx
+++ b/src/generic/modal-dropzone/ModalDropzone.jsx
@@ -15,7 +15,7 @@ import { FileUpload as FileUploadIcon } from '@openedx/paragon/icons';
import useModalDropzone from './useModalDropzone';
import messages from './messages';
-import { UPLOAD_FILE_MAX_SIZE } from '../../constants';
+import { getUploadFileMaxSize } from '@src/constants';
const ModalDropzone = ({
fileTypes,
@@ -30,7 +30,7 @@ const ModalDropzone = ({
onChange,
onSavingStatus,
onSelectFile,
- maxSize = UPLOAD_FILE_MAX_SIZE,
+ maxSize,
}) => {
const {
intl,
@@ -46,9 +46,10 @@ const ModalDropzone = ({
onChange, onCancel, onClose, fileTypes, onSavingStatus, onSelectFile,
});
+
const invalidSizeMore = invalidFileSizeMore || intl.formatMessage(
messages.uploadImageDropzoneInvalidSizeMore,
- { maxSize: maxSize / (1000 * 1000) },
+ { maxSize: (maxSize || getUploadFileMaxSize()) / (1024 * 1024) },
);
const inputComponent = previewUrl ? (
@@ -129,7 +130,7 @@ ModalDropzone.defaultProps = {
imageHelpText: '',
previewComponent: null,
imageDropzoneText: '',
- maxSize: UPLOAD_FILE_MAX_SIZE,
+ maxSize: 'undefined',
invalidFileSizeMore: '',
onSelectFile: null,
};
diff --git a/src/textbooks/textbook-form/TextbookForm.jsx b/src/textbooks/textbook-form/TextbookForm.jsx
index dfc472ce4f..3635306a72 100644
--- a/src/textbooks/textbook-form/TextbookForm.jsx
+++ b/src/textbooks/textbook-form/TextbookForm.jsx
@@ -21,7 +21,7 @@ import FormikControl from '../../generic/FormikControl';
import PromptIfDirty from '../../generic/prompt-if-dirty/PromptIfDirty';
import ModalDropzone from '../../generic/modal-dropzone/ModalDropzone';
import { useModel } from '../../generic/model-store';
-import { UPLOAD_FILE_MAX_SIZE } from '../../constants';
+import { getUploadFileMaxSize } from '@src/constants';
import textbookFormValidationSchema from './validations';
import messages from './messages';
@@ -171,7 +171,7 @@ const TextbookForm = ({
onSavingStatus={onSavingStatus}
invalidFileSizeMore={intl.formatMessage(
messages.uploadModalFileInvalidSizeText,
- { maxSize: UPLOAD_FILE_MAX_SIZE / (1000 * 1000) },
+ { maxSize: getUploadFileMaxSize() / (1024 * 1024) },
)}
onSelectFile={setSelectedFile}
previewComponent={(
@@ -180,7 +180,7 @@ const TextbookForm = ({
{selectedFile}
)}
- maxSize={UPLOAD_FILE_MAX_SIZE}
+ maxSize={getUploadFileMaxSize()}
/>
>